我正在创建我自己的bash脚本,但我现在卡住了。基本上,该脚本将用于在CentOS中自动进行服务器设置。有些软件通常要求用户输入密码。我希望脚本将我生成并存储为变量的密码,而不是询问用户。在bash脚本中模拟用户输入
在安装期间出现消息“New password:”时,如何让脚本将值存储在变量$key
中,就好像用户使用bash脚本键入了它一样?
我正在创建我自己的bash脚本,但我现在卡住了。基本上,该脚本将用于在CentOS中自动进行服务器设置。有些软件通常要求用户输入密码。我希望脚本将我生成并存储为变量的密码,而不是询问用户。在bash脚本中模拟用户输入
在安装期间出现消息“New password:”时,如何让脚本将值存储在变量$key
中,就好像用户使用bash脚本键入了它一样?
你会发现'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"
下面是一段代码,我写的剧本Ÿ索要用户的密码,并设置它们的/ 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!"
是的,我用期待很多! – Napolux
这里的伙计是“New password:”,当脚本用yum安装东西时(例如mysql),你可以向我展示这个特殊情况的代码片段。我主要使用sed并从未使用expect。教程你提供了,它似乎你可以使用期望当用户想要输入的东西 – Werulz
看看'#!'行 - 这是一个Expect *脚本*。整个事情由'expect'运行,而不是'bash'运行,所以它是用Expect语言编写的(基本上是Tcl),重要的命令在那里 - 'spawn'用来启动你正在交互的命令,'expect'等待它发送一个特定的字符串,'发送'发送回复,如果你想把控制权交还给用户,你可以用'interact'来完成。 –