1、作用:自动化控制发布,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信; 2、安装:yum install -y expect; 3、expect自动交互流程:spawn启动指定进程---expect获取指定关键字---send向指定程序发送指定字符---执行完成退出. 4、常用的命令: spawn 交互程序开始后面跟命令或者指定程序 expect 获取匹配信息匹配成功则执行expect后面的程序动作 send #用于发送指定的字符串信息(发送问题答案给交互命令) exp_continue #在expect中多次匹配就需要用到(当问题不存在时继续回答下边的问题) exit 退出expect脚本 eof expect执行结束 退出(expect eof) set 定义变量(set key [ lindex $argv n]),使用 send_user 用来打印输出 相当于shell中的echo puts 输出变量 set timeout #设置超时时间(set timeout 10) interact #问题回答完毕留在交互界面 "\r" #表示回⻋ puts在输出字符串的尾部自动添加换行符而send_user不会自动添加,除了换行符外,如果在Expect脚本中使用日志文件,则通过发送的语句send_user会将其放入日志文件,而通过发送的语句puts则不会。大部分时候puts和send_user可以互相取代,只要注意其中的不同即可。 5、例子: #!/bin/bash
passwd='123456'
/usr/bin/expect <<-EOF
set time 30 spawn ssh saneri@192.168.56.103 df -Th expect { "*yes/no" { send "yes\r"; exp_continue } "*password:" { send "$passwd\r" } } expect eof EOF