Expect 插件是作为自动应答机制功能的实现被开发出来的
它的的特点就是利用提示需要输入的关键字判断是否是希望看到的输入标识符,然后在标识符后面输入已经准备好的命令输入进去。
先来一个简单的例子:
程序实现的是远程登录到对应IP端,然后执行特定位置的脚本
#!/usr/expect/bin/expect
set timeout 300
set usrname [lindex $argv 0]
set password [lindex $argv 1]
set ipaddress [lindex $argv 2]
set location [lindex $argv 3]
set testscript [lindex $argv 4]
#set system_sn [lindex $argv 2]
spawn ssh $usrname@$ipaddress
expect "password"
send "$password\r"
expect "~]#"
send "sh $location/$testscript\r"
send "exit\r"
expect eof
spawn命令激活一个Unix程序来进行交互式的运行。
send命令向进程发送字符串。
expect 命令等待进程的某些字符串。
expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作.
注意事项:
1.引用expect前需要先进行安装expect
CentOs 下expect安装步骤
2.timeout的值是以秒为单位
3.Send语句之后需要加\r 确认语句输出
4.脚本最后一定要以expect eof 结尾