介绍
expect 是一个用来处理 交互 的命令。
借助expect,可以将 交互过程 写在一个脚本上,使之自动化完成。
比如:ssh自动登录,ftp自动登录 等都符合交互的定义,可以通过 expect 脚本实现
支持操作系统:linux、unix、mac
安装
一般unix、linux、mac会自带
linux
确认是否安装
rpm -qa | grep expect
查看安装路径
which expect
关键4个命令
expect中最关键的四个命令是:send,expect,spawn,interact。
spawn:启动新的进程
expect:从进程接收字符串
send:用于向进程发送字符串
interact:允许用户交互
以ssh自动登录为例进行讲解
set timeout 30
设置超时时间,单位:秒。暂时用不到
例子:
#!/usr/bin/expect -f
set timeout 30
注意:
第一行表示 expect 脚本
spawn
启动新的进程
例子:
#!/usr/bin/expect -f
set timeout 30
spawn ssh root@127.0.0.1
执行 ssh 命令,以root用户登录ip是127.0.0.1的服务器
expect
从进程接收字符串
例子:
#!/usr/bin/expect -f
set timeout 30
spawn ssh root@127.0.0.1
expect "password:"
判断接收字符串是否包含password:,如果有则立即返回,否则就等待一段时间后返回
这里等待时长就是前面set timeout 30设置的超时时间
send
用于向进程发送字符串(就是执行 交互 动作)
例子:
#!/usr/bin/expect -f
set timeout 30
spawn ssh root@127.0.0.1
expect "password:"
send "abcd1234\r"
相当于手动输入密码。
注意: 结尾必须加上\r,表示回车
interact
允许用户交互,此时用户可以在控制台执行其他操作。
如果没有此命令,登录完成后会退出,而不是留在控制台上。
感谢:
https://www.cnblogs.com/lzrabbit/p/4298794.html
https://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html