Суть:

После установки Debian/Ubuntu, пользователь запускает скрипт script.sh, в результате которого, в конец файла fstab копируется строчка по умолчанию:

//10.3.75.8/обменник /mnt/Share cifs domain=mydomen.ru,username=Sasha,password=tytparol,iocharset=utf8,auto,users,file_mode=0777,dir_mode=0777 0 0

делается это так

 Консоль:
echo "//10.3.75.8/обменник /mnt/Share cifs domain=mydomen.ru,username=Sasha,password=tytparol,iocharset=utf8,auto,users,file_mode=0777,dir_mode=0777 0 0" >> /etc/fstab

и сразу же предлагается изменить в ней параметры на нужные...

а  потом изменять в ней переменные, на нужные

pathshare=//10.3.75.8/обменник
nameshare=/mnt/Share
namedomain=mydomen.ru
loginuser=Sasha
passwduser=tytparol

После введённых пользователем конкретных значений, строка заменяется к примеру на

//10.3.78.210/хлам /mnt/pomoyka cifs domain=domenchik.ru,username=Admin,password=zloyparol,iocharset=utf8,auto,users,file_mode=0777,dir_mode=0777

это если пользователь ввёл значения этих переменных в интерактивном режиме:
Например:

Введите полный путь, где лежит папка к общему ресурсу:
//10.3.78.210/хлам
Введите название этой папки:
pomoyka
Введите название домена:
domenchik.ru
Введите логин пользователя:
Admin
Введите пароль пользователя:
zloyparol

и создаётся папка в /mnt так

 Консоль:
mkdir /mnt/pomoyka


Помогите мне с частью этого скрипта. Как написать это участок скрипта?

2

silenduhom, пожалуйста, используйте BB-коды для выделения кода и команд консоли, иначе остальным тяжело читать. Исправил Вам на первый раз.

ᛈᚺ'ᚾᚷᛚᚢᛁ ᛗᚷᛚᚹ'ᚾᚨᚠᚺ ᚲᛏᚺᚢᛚᚺᚢ ᚱ'lᚷᛖᚺ ᚹᚷᚨᚺ'ᚾᚨᚷᛚ ᚠᚺᛏᚨᚷᚾ

Asus Prime B460M-K, i5-10500, Intel 630 UHD + NVIDIA GeForce RTX3060, DDR4 32 GB, SSD 1TB + HDD 2TB | Linux Mint 22.3 Cinnamon + Windows 11

3

silenduhom, А зачем писать строку в файл, а потом пытаться там что-то менять??
Не проще ли сразу при запуске спросить о переменных, а если они небыли введены - записать те что по умолчанию:

echo "Введите полный путь, где лежит папка к общему ресурсу:"
read pathshare
if [ !$pathshare ]
    then pathshare='//10.3.75.8/обменник'
    fi

....и т.д. .....

echo -e "$pathshare \t $nameshare \t cifs \t domain=$namedomain,username=$loginuser,password=$passwduser,iocharset=utf8,auto,users,file_mode=0777,dir_mode=0777 \t 0 \t 0" >> /etc/fstab
- Пап, а вирусы под линукс есть?
- Есть, но всего 5, и их сначала нужно откомпилировать под свою систему, дать права на запуск и запустить.
Как сделать и разместить скриншот || Прежде чем создавать тему

4

Спасибо добрый человек
*** Добавлено: 17.04.2019 22:46:03 ***

DiabloPC,
решил не засовывать в свой скрипт большой, а создал маленький скриптик, решающий мою задачу, но в итоге внутри лежит только этот код:

#!/bin/bash
echo "Введите полный путь, где лежит папка к общему ресурсу, соблюдая слэши:"
read pathshare
if [ !$path1share ]
    then pathshare='//10.3.75.3/обменник'
    fi

echo "Введите название папки, совместно с путём точки монтирования, соблюдая слэши, например:"
read nameshare
if [ !$nameshare ]
    then nameshare='/mnt/обменник'
    fi

echo "Введите домен, например: gazprom.ru:"
read namedomain
if [ !$namedomain ]
    then namedomain='gazprom.ru'
    fi

echo "Введите логин пользователя, доступ которому разрешён к общему ресурсу:"
read loginuser
if [ !$loginuser ]
    then loginuser='kyabishev'
    fi

echo "Введите пароль этого пользователя, доступ которому разрешён к общему ресурсу:"
read passwduser
if [ !$passwduser ]
    then passwduser='Admin123'
    fi

$ echo -e "$pathshare \t $nameshare \t cifs \t domain=$namedomain,username=$loginuser,password=$passwduser,iocharset=utf8,auto,users,file_mode=0777,dir_mode=0777 \t 0 \t 0 >> /etc/fstab

И выдаёт ошибку:

Консоль:

root@TEST-TEST-TEST:~# bash /home/administrator/Desktop/echo.sh
/home/administrator/Desktop/echo.sh: строка 2: $'\r': команда не найдена
Введите полный путь, где лежит папка к общему ресурсу, соблюдая слэши:
»: это недопустимый идентификаторsh: строка 4: read: «pathshare
/home/administrator/Desktop/echo.sh: строка 33: неожиданный конец файла во время поиска «"»
/home/administrator/Desktop/echo.sh: строка 34: синтаксическая ошибка: неожиданный конец файла

В чём проблема?

5

silenduhom пишет:

/home/administrator/Desktop/echo.sh: строка 33: неожиданный конец файла во время поиска «"»
/home/administrator/Desktop/echo.sh: строка 34: синтаксическая ошибка: неожиданный конец файла

Не закрыты кавычки в последней строке.

silenduhom пишет:

if [ !$path1share ]

Неправильная переменная

Всё остальное нормально выполняется

- Пап, а вирусы под линукс есть?
- Есть, но всего 5, и их сначала нужно откомпилировать под свою систему, дать права на запуск и запустить.
Как сделать и разместить скриншот || Прежде чем создавать тему

6

silenduhom пишет:

/home/administrator/Desktop/echo.sh: строка 34: синтаксическая ошибка: неожиданный конец файла

Ну тут я думаю нужно добавить в конец

exit 0
Спросить - стыд минуты, не узнать - стыд всей жизни

7

silenduhom пишет:

/home/administrator/Desktop/echo.sh: строка 2: $'\r': команда не найдена

А что именно там на второй строке?? Что-то там есть, но сюда оно не попало...
*** Добавлено: Apr 17 2019 11:03:19 pm ***

lone_wolf пишет:

Ну тут я думаю нужно добавить в конец

Ни в коем случае! Так оно даже если будут косяки всеравно будет возвращать 0 , т.е. будет делать вид что всё впорядке. Там просто кавычки не закрыты после echo

Я даже знаю почему они не закрыты:
Потому что это я косякнул (ото нечего такое с телефона писать  be ) в 3-м сообщении, а тс просто скопипастил не перечитывая команду ag

- Пап, а вирусы под линукс есть?
- Есть, но всего 5, и их сначала нужно откомпилировать под свою систему, дать права на запуск и запустить.
Как сделать и разместить скриншот || Прежде чем создавать тему

8

DiabloPC пишет:

Ни в коем случае! Так оно даже если будут косяки всеравно будет возвращать 0 , т.е. будет делать вид что всё впорядке. Там просто кавычки не закрыты после echo

Согласен, вредный совет дал  bw

Спросить - стыд минуты, не узнать - стыд всей жизни

9 (17.04.2019 23:21:27 отредактировано silenduhom)

DiabloPC,
Итак, заново подправил, смотрите:

#!/bin/bash
echo "Введите полный путь, где лежит папка к общему ресурсу, соблюдая слэши:"
read pathshare
if [ !$pathshare ]
    then pathshare='//10.3.75.3/обменник'
    fi
echo "Введите название папки, совместно с путём точки монтирования, соблюдая слэши, например:"
read nameshare
if [ !$nameshare ]
    then nameshare='/mnt/обменник'
    fi
echo "Введите домен, например: gazprom.ru:"
read namedomain
if [ !$namedomain ]
    then namedomain='gazprom.ru'
    fi
echo "Введите логин пользователя, доступ которому разрешён к общему ресурсу:"
read loginuser
if [ !$loginuser ]
    then loginuser='1'
    fi
echo "Введите пароль этого пользователя, доступ которому разрешён к общему ресурсу:"
read passwduser
if [ !$passwduser ]
    then passwduser='Admin123'
    fi
echo -e "$pathshare \t $nameshare \t cifs \t domain=$namedomain,username=$loginuser,password=$passwduser,iocharset=utf8,auto,users,file_mode=0777,dir_mode=0777 \t 0 \t 0" >> /etc/fstab

в ответ

bash /home/administrator/Desktop/echo.sh
Введите полный путь, где лежит папка к общему ресурсу, соблюдая слэши:
»: это недопустимый идентификаторsh: строка 3: read: «pathshare
/home/administrator/Desktop/echo.sh: строка 28: синтаксическая ошибка: неожиданный конец файла

Что на этот раз?

10

Попробуйте вот так

read -e pathshare
Спросить - стыд минуты, не узнать - стыд всей жизни

11

silenduhom, bash случайно не 4.хх??
Если да то тогда вот так:

if [ $pathshare == '' ]

В приглашениях echo "bla bla bla" заменить на echo 'bla bla bla'

- Пап, а вирусы под линукс есть?
- Есть, но всего 5, и их сначала нужно откомпилировать под свою систему, дать права на запуск и запустить.
Как сделать и разместить скриншот || Прежде чем создавать тему

12

lone_wolf, тоже самое
*** Добавлено: 17.04.2019 23:39:27 ***

DiabloPC, Astra Linux SE 1.6 bash 4.4-5

13

silenduhom пишет:

bash 4.4-5

Тогда смотри выше
Да, кста, можно еще попробовать завернуть переменные в read в кавычки read "pathshare"

- Пап, а вирусы под линукс есть?
- Есть, но всего 5, и их сначала нужно откомпилировать под свою систему, дать права на запуск и запустить.
Как сделать и разместить скриншот || Прежде чем создавать тему

14

DiabloPC, тоже самое в 3 строке где read и концовка 28 ошибки

15

Очень интересно, у меня скрипт отрабатывает на ура.

 Консоль:
bash --version
GNU bash, версия 4.4.23(1)-release (x86_64-redhat-linux-gnu)

cat /etc/redhat-release
Fedora release 29 (Twenty Nine)

Спросить - стыд минуты, не узнать - стыд всей жизни

16

lone_wolf, скинь его в файл запущу, может что не так с кодировкой

17

DiabloPC пишет:
if [ $pathshare == '' ]

Переменную в фигурные скобки надо: ${PATHSHARE}, вместо /usr/bin/test (он же '[') надо '[[', заменять нестрогие кавычки на строгие в вызове echo необязательно.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

18

даже вспомнил в какой виртуалке есть bash4

+ Вот так работает
#!/bin/bash
echo "Введите полный путь, где лежит папка к общему ресурсу, соблюдая слэши:"
read "pathshare"
if [ "$pathshare" == "" ]
    then pathshare='//10.3.75.3/обменник'
    fi
echo "Введите название папки, совместно с путём точки монтирования, соблюдая слэши, например:"
read "nameshare"
if [ "$nameshare" == "" ]
    then nameshare='/mnt/обменник'
    fi
echo "Введите домен, например: gazprom.ru:"
read "namedomain"
if [ "$namedomain" == "" ]
    then namedomain='gazprom.ru'
    fi
echo "Введите логин пользователя, доступ которому разрешён к общему ресурсу:"
read "loginuser"
if [ "$loginuser" == "" ]
    then loginuser='1'
    fi
echo "Введите пароль этого пользователя, доступ которому разрешён к общему ресурсу:"
read "passwduser"
if [ "$passwduser" == "" ]
    then passwduser='Admin123'
    fi
- Пап, а вирусы под линукс есть?
- Есть, но всего 5, и их сначала нужно откомпилировать под свою систему, дать права на запуск и запустить.
Как сделать и разместить скриншот || Прежде чем создавать тему

19

silenduhom пишет:

lone_wolf, скинь его в файл запущу, может что не так с кодировкой

вот

+ открыть спойлер
Спросить - стыд минуты, не узнать - стыд всей жизни

20

yars, такая же фигня, прямо таки бесит эта загадка фараона, может кто-нибудь Astra Linux  завиртуалит, хотя бы CE а не SE версию и напишет правильно? Что-то тут не так, ошибка в 3 строке, что не так с bash

21

silenduhom пишет:
bash /home/administrator/Desktop/echo.sh
Введите полный путь, где лежит папка к общему ресурсу, соблюдая слэши:
»: это недопустимый идентификаторsh: строка 3: read: «pathshare
/home/administrator/Desktop/echo.sh: строка 28: синтаксическая ошибка: неожиданный конец файла

Это потому, что bash интерпретирует строку в переменной pathshare как два разных аргумента, разделенных пробелами.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

22

lone_wolf, ты ошибся файлом

23

yars пишет:

в фигурные скобки надо: ${PATHSHARE}

Имеешь ввиду в последней строке?

yars пишет:

вместо /usr/bin/test (он же '[') надо '[[',

В чем профит?

yars пишет:

аменять нестрогие кавычки на строгие в вызове echo необязательно.

Та по идее да, а по факту чЁртПоймешь

- Пап, а вирусы под линукс есть?
- Есть, но всего 5, и их сначала нужно откомпилировать под свою систему, дать права на запуск и запустить.
Как сделать и разместить скриншот || Прежде чем создавать тему

24

silenduhom пишет:

lone_wolf, ты ошибся файлом

ah  не то, во

+ открыть спойлер
Спросить - стыд минуты, не узнать - стыд всей жизни

25

DiabloPC, как написал полностью, не работает 3 ошибка

26

DiabloPC пишет:

Имеешь ввиду в последней строке?

Везде, где есть переменные.
*** Добавлено: 18th Apr 2019 00:13:15 ***

DiabloPC пишет:

В чем профит?

word splitting и pathname expansion не применяются.
UPD. Хм, твой первый вариант у меня без проблем сработал...

$ bash --version
GNU bash, версия 5.0.3(1)-release (x86_64-slackware-linux-gnu)
Copyright (C) 2019 Free Software Foundation, Inc.
Лицензия GPLv3+: GNU GPL версии 3 или более поздней <http://gnu.org/licenses/gpl.html>

Это свободное программное обеспечение. Вы можете изменять и распространять его.
НИКАКАЯ ГАРАНТИЯ не предоставляется в пределах, допускаемых законом.
Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

27

silenduhom пишет:

кто-нибудь Astra Linux  завиртуалит

мне как бы не лень, но неужели там так сильно bash перепилен?....

yars пишет:

Везде, где есть переменные

хуже точно не будет) странно что у меня выполняется и без этого...
*** Добавлено: Apr 18 2019 12:18:28 am ***

yars пишет:

Хм, твой первый вариант у меня без проблем сработал...

так отож, у меня тоже работает, но bash таки тоже 5хх, у ТС 4хх - там далеко не факт что такая конструкция приживётся

*** Добавлено: Apr 18 2019 12:20:56 am ***

yars пишет:

word splitting и pathname expansion не применяются.

А что толку в данном случае, нам же только нужно понять что переменная не пустая, а что в ней - абсолютно до лампочки

- Пап, а вирусы под линукс есть?
- Есть, но всего 5, и их сначала нужно откомпилировать под свою систему, дать права на запуск и запустить.
Как сделать и разместить скриншот || Прежде чем создавать тему

28

lone_wolf пишет:
silenduhom пишет:

lone_wolf, ты ошибся файлом

ah  не то, во

+ открыть спойлер

хорошая новость - запустилось и отработало без ошибок, плохая все данные что я ввожу в интерактивном режиме игнорируются и в fstab записываются переменные которые в скрипте, а не вводимые. Что подправить?
*** Добавлено: 18.04.2019 00:24:01 ***

т.е. реально зашёл по пути, /etc/fstab а там красиво, не то что я вводил. Как быть?

29

silenduhom пишет:

а не вводимые

bash4 не отрабатывает конструкцию !$variable, соответственно меняем их на

"$variable" == ""

или

${variable} == ""
- Пап, а вирусы под линукс есть?
- Есть, но всего 5, и их сначала нужно откомпилировать под свою систему, дать права на запуск и запустить.
Как сделать и разместить скриншот || Прежде чем создавать тему

30

silenduhom пишет:

Что подправить?

Уберите в последнем echo перенаправление напрямую в fstab

--- test.sh    2019-04-18 00:24:30.520337795 +0300
+++ test1.sh    2019-04-18 00:23:41.741022209 +0300
@@ -29,5 +29,4 @@
     then passwduser='Admin123'
 fi
 
-echo -e "$pathshare \t $nameshare \t cifs \t domain=$namedomain,username=$loginuser,password=$passwduser,iocharset=utf8,auto,users,file_mode=0777,dir_mode=0777 \t 0 \t 0" >> /etc/fstab
-
+echo -e "$pathshare \t $nameshare \t cifs \t domain=$namedomain,username=$loginuser,password=$passwduser,iocharset=utf8,auto,users,file_mode=0777,dir_mode=0777 \t 0 \t 0"

Увидите, что у вас за поля сформируются. И да, после каждого запуска скрипта fstab будет разбухать...

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580