简介
Expect是一个控制交互式程序的工具,用交互式方式实现非交互式功能。
用法案例1:向远程主机中添加known_hosts信息
实现步骤:
- 安装expect工具:
yum -y install expect
- 编写expect脚本(命名:FILENAME.exp,如:addknownhost.exp):
#!/usr/bin/expect
#判断用户输入的变量个数,若不等于1,则退出该expect脚本
if { $argc != 1 } {
send_user "usage:expect addkownhost.exp host\n"
exit
}
#设置交互式超时时间,本文是在输入yes之后,提示输入password的时候结束expect交互
set timeout 1
#设置host变量为命令行输入的第一个变量
set host [lindex $argv 0]
#运行shell命令
spawn ssh $host
#检测执行命令中有输出"(yes/no)"字符串的时候,输入yes\r
expect "(yes/no)?" {send "yes\r"};
#交互式结束标志语句
expect eof
#退出expect执行的命令
exit -onexit {
#向终端发送expect timeout! quit.的提示信息
send_user "\nexpect timeout! quit.\n"
}
- 运行expect脚本
expect addknownhost.exp 127.0.0.1
- 执行结果查看