@dmg8811

Можно ли создать полностью автоновный bash скрипт, не требующий ввода руками?

Всегда ли можно создать bash скрипт, чтобы он работал вообще без ввода данных?
То есть, я хочу создать такой new_os_init.sh, чтобы он устанавливал всё, что мне нужно, создавал пользователя, группу, настраивал visudo.... вот короче всё, что я сейчас делаю вручную на новом сервере.

Всегда ли такое возможно или хоть иногда, но нужно всё равно что-то вводить руками?
Если всегда, то в какую сторону копать: как сделать, чтобы он 1) отвечал yes 2) выбирал тот, вариант ответа, который мне нужен и т.п.

Разумеется, я заранее знаю, что где надо отвечать.
  • Вопрос задан
  • 456 просмотров
Пригласить эксперта
Ответы на вопрос 5
@AVKor
Можно.
Ответ написан
Комментировать
xotkot
@xotkot
хорошо есть и хорошо весьма
Большинство утилит в linux могут работать в режиме "скрипта"(например, parted -s ...), то есть производить автоматизированное принятие заданного ответа или действия по умолчанию(например, rm -f ... удалять без подтверждения).
В крайнем случае можно найти утилиты которые это умеют. Например, для задания пароля после создании пользователя вместо passwd можно использовать chpasswd:
echo "root:1234" | chpasswd

Если же утилита не поддерживает режим скрипта и нету подходящих замен то можно воспользоваться утилитой expect о которой ранее писал Константин.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Можно.
Простейший вариант - читайте справку про аргументы командной строки, многим командам можно все необходимые данные передаьт при запуске.

Далее читайте про про перенаправления.Например, для подобной команды, как

$ command
press "yes" to continue
(вводим yes)
completed
$


В скрипте для автоматизации можно сделать
command <<<"yes"

command <<EOF
yes
EOF


echo yes > answers.txt
command <answers.txt
Ответ написан
Комментировать
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Не совсем чистый bash, Но позволяющий обойтись без этих велосипедов:
ansible
Ответ написан
Комментировать
Energoblock
@Energoblock
Geek
Можно :)

Для взаимодействия с интерактивными запросами есть программа expect.
Очень подробно с примерами expect описан на хабре.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы