目录
expect
—— 是建立在 tcl(tool command language)语言基础上的一个工具,常被用于进行自动化控制和测试,解决 shell 脚本中交互的相关问题
要先安装 expect
rpm -q expect rpm -q tcl yum install -y expect
制作免交互脚本
#!/usr/bin/expect
spawn ssh 192.168.88.30
expect {
#捕捉关键字
"yes/no" { send "yes\n";exp_continue }
#捕捉到第一个关键字 yes/no 如果有 yes/no 那么就发送 yes加回车 exp_continue继续捕捉
"password" { send "123456\n" }
#捕捉到第二个关键字,就发送密码和回车
}
#expec eof
#捕捉结束,但是会返回原来的终端
interact
基本命令
1.脚本解释器
expect 脚本中首先引入文件,表明使用的事哪一种shell
#!/usr/bin/expect
2.spawn
spawn 后面通常跟一个Linux执行命令,表示开启一个会话、进程,并跟踪后续交互信息
后面加 命令
3.expect
判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回;只能捕捉有swpan启动的进程输出;
用于接受命令执行后的输出,然后和期望的字符串匹配
4.send
向进程发送字符串,用于模拟用户的输入:该命令不能自动回车换行,一般要加 \r (回车) 或者\ n
5.结束符
expect eof
表示交互结束,等待执行结束,退回到原用户,与spawn对应
6.set
expect 默认的超时时间是10秒,通过set 命令可以设置会话超时时间,若不限制超时时间则应设置为-1
7.exp_continue
exp_continue 表示允许 expect 继续向下执行指令.
exp_continue附加于某个expect 判断选项之后,可以是该项被匹配后还能继续匹配expect 判断语句内的其他项。exp_continue类似于控制语句的continue语句。表示允许expect继续向下执行命令。
8.send_user
表示回显命令与echo相同