Подтвердить что ты не робот

Имитировать пользовательский ввод в bash script

Я создаю свой собственный bash script, но я застрял в данный момент. В принципе, script будет использоваться для автоматизации настройки сервера в CentOS. Некоторое программное обеспечение обычно запрашивает у пользователя пароль. Я хочу, чтобы script поместил пароль, который я сгенерировал и сохранил как переменную, вместо того, чтобы спрашивать пользователя.

Когда появляется сообщение "Новый пароль:" во время установки, как я могу заставить script поместить значение, хранящееся в переменной $key, как если бы пользователь набрал его, с bash script?

4b9b3361

Ответ 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!"