Имитировать пользовательский ввод в bash script
Я создаю свой собственный bash script, но я застрял в данный момент. В принципе, script будет использоваться для автоматизации настройки сервера в CentOS. Некоторое программное обеспечение обычно запрашивает у пользователя пароль. Я хочу, чтобы script поместил пароль, который я сгенерировал и сохранил как переменную, вместо того, чтобы спрашивать пользователя.
Когда появляется сообщение "Новый пароль:" во время установки, как я могу заставить script поместить значение, хранящееся в переменной $key
, как если бы пользователь набрал его, с bash script?
Ответы
Ответ 1
Вы должны найти команду "ожидать", которая сделает то, что вам нужно. Его широко доступно. См. Здесь пример: http://www.thegeekstuff.com/2010/10/expect-examples/
(очень грубый пример)
#!/usr/bin/expect
set pass "mysecret"
spawn /usr/bin/passwd
expect "password: "
send "$pass"
expect "password: "
send "$pass"
Ответ 2
Вот фрагмент, который я написал; запросить пароль пользователя и установить его в /etc/passwd. Вы можете немного манипулировать им, чтобы получить то, что вам нужно:
echo -n " Please enter the password for the given user: "
read userPass
useradd $userAcct && echo -e "$userPass\n$userPass\n" | passwd $userAcct > /dev/null 2>&1 && echo " User account has been created." || echo " ERR -- User account creation failed!"