一、定义:expect是linux上的一种人机交互的一套工具,它里面的命令能完成数据的接受、发送以及新进程的启动。
二、参数
spawn:发起一个新的启动进程,如:spawn ssh perfadmin@10.124.X.X (该命令是完成对10.124.X.X 的ssh登录),spawn scp 本地文件 perfadmin@10.124.X.X:远程机器的地方(启动了scp,将本地文件拷贝到10.124.X.X机器指定的地方)
expect:接收交互进程中发送的数据,在接收数据中可以使用正则表达式匹配。如我们平常的ssh登录后,会给一个如下提示:
expect接收内容为类似上图红色部。对于上面的情况expect命令为:expect "*password"
send:接收进程发送的数据
interact:继续本次的回话
expect eof:结束本次的回话
exp_continue:匹配多个字符串在执行动作后加此命令
三、举例说明
eg:连接10.124.X.X机器,并在10.124.X.X机器上执行删除文件和启动nmon
#!/usr/bin/expect 目的是为了引用expect命令
spawn ssh root@10.124.X.X #连接10.124这台机器
expect "*password:" #接受到password这个词语是
send "1qaz2wsx\r" #就输入密码
expect "Last login:*" #然后接受到Last login时
send "cd /home/root/wang\r" #将目录切换到 wang这个目录
send "rm -rf testwang.nmon\r" #继续输入删除testwang.nmon命令
send "./nmon -F 20180411.nmon -t -s 10 -c 100" #继续执行文件下的nmon命令
expect eof #停机本次回话