一、什么是expect?
expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
二、安装expect
# 安装 expect
yum -y install expect
三、使用expect
以下是expect常用命令:
spawn # 交互程序开始后面跟命令或者指定程序
expect # 获取匹配信息匹配成功则执行expect后面的程序动作
send exp_send # 用于发送指定的字符串信息
exp_continue # 在expect中多次匹配就需要用到
send_user # 用来打印输出 相当于shell中的echo
exit # 退出expect脚本
eof # expect执行结束 退出
set # 定义变量
puts # 输出变量
set timeout # 设置超时时间
四、案例
1、【案例1】A服务器通过脚本连接B服务器
- 环境:有两台服务器, 分别是 106.14.157.48 和 101.34.253.57
- 需求:在101.34.253.57服务器上通过脚本连接 106.14.157.48服务器
#!/usr/bin/expect
# 开启一个程序
spawn ssh -p 5000 root@49.232.112.117
# 捕获相关内容
expect {
"(yes/no)?" { send "yes\r";exp_continue }
"password:" { send "*********\r" }
}
interact #交互
通过执行上面的脚本, 可以很方便的实现“免密”登录 。
tips:除了使用脚本实现免密登录, 还可以配置 “ssh免密登录“, 详细信息请看《 ssh 免密登录 》
2、【案例2】A服务器通过脚本连接B服务器,并创建文件
#!/usr/bin/expect
# 开启一个程序
spawn ssh -p 5000 root@49.232.112.117
# 捕获相关内容
expect {
"(yes/no)?" { send "yes\r";exp_continue }
"password:" { send "*********\r" }
}
expect "#"
send "rm -rf /tmp/*\r" # 移除文件下所有文件
send "touch file{1..3}\r" # 创建三个文件
send "exit\r" # 退出远程服务器
expect eof # 执行结束 退出
执行上面的脚本, 可以得到如下结果
[root@converts ~]# ll
total 1060
-rw-r--r-- 1 root root 0 Dec 14 21:51 file1
-rw-r--r-- 1 root root 0 Dec 14 21:51 file2
-rw-r--r-- 1 root root 0 Dec 14 21:51 file3
暂无评论