我正在尝试使用expect实用程序来自动化脚本执行期间需要输入密码的任务。期望脚本条件方案
expect -c "set timeout 120;
spawn /bin/bash /home/user/script.sh;
# Expect 1 - not expected always
expect \"Are you sure you want to continue connecting (yes/no)?\"; send "yes\r";
# Expect 2 - not expected always
expect \"Please type 'yes' or 'no':\"; send \"yes\r\";
# Expect 3 - this is required always to input the password
expect \"[email protected]'s password:\"; send \"password\r\"; expect eof"
从上面的脚本中,期望1和2条件并不总是必需的。它仅在对新服务器执行脚本时需要。一旦主机的身份被添加到已知主机,脚本就不会提示前2个预期条件。期望3是大多数情况下要满足的唯一条件。
在一个系统中,主机标识已经存在,期望脚本执行第一个条件并保持到达到超时并且不会期望3.我不知道如何实现这个,但是在那里如果没有达到提示,这种方法可能会中断。
http://stackoverflow.com/q/1538444/1005215 –
期望不是bash的一部分,它不是特定于bash,它不随bash一起发运,它甚至不使用bash引擎它基于的语言是TCL)。你可以在没有安装bash的情况下运行expect脚本。 bash标签在特定问题中没有地位。 –
谢谢,期望命令本身不是根据脚本bash。我想要执行的script.sh是一个bash脚本,但是这就是为什么我要调用bash可执行文件 – user6930