在bash脚本中模拟用户输入

时间:2013-02-03 08:28:19

标签: bash input emulation user-input

我正在创建自己的bash脚本,但此刻我被困住了。基本上,该脚本将用于自动化CentOS中的服务器设置。某些软件通常会要求用户输入密码。我希望脚本将我生成并存储的密码作为变量而不是询问用户。

如果在安装过程中出现“新密码:”消息,如何让脚本将值存储在变量$key中,就像用户使用bash脚本键入它一样?

2 个答案:

答案 0 :(得分:49)

您应该会发现'expect'命令会执行您需要它执行的操作。它广泛可用。请参阅此处以获取示例: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"

答案 1 :(得分:2)

这是我为y脚本编写的一段代码,用于询问用户的密码并在/ 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 acount creation failed!"