expect介绍和使用

一、介绍

expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

二、expect自动交互流程

spawn启动指定进程 -> expect匹配指定关键字 -> send向指定程序发送指定字符 -> eof执行完成退出

三、安装expect

yum install expect -y

四、expect常用命令

命令说明
spawn交互程序开始,后面跟命令或者指定程序
expect获取匹配信息匹配成功则执行expect后面的程序动作
send用于发送指定的字符串信息
exp_continue在expect中多次匹配需要用到
send_user用来打印输出 相当于shell中的echo
exit退出expect脚本
eofexpect执行结束退出
set定义变量
puts输出变量
set timeout设置超时时间,默认30s,-1为无穷大

五、使用(以scp命令拷贝文件为例)

1.单次交互

a.直接使用scp命令拷贝文件

如果两台机器没有建立互信执行scp命令拷贝文件需要输密码,如下图所示:
在这里插入图片描述

b.新建脚本文件scp.sh
touch /opt/scp.sh
c.scp.sh文件中添加以下内容
#!/usr/bin/expect
spawn scp /opt/test.txt root@192.168.233.233:/home/highgo
expect "*password"
send "123456\n"
expect eof
d.scp.sh文件添加执行权限
chmod +x scp.sh
e.执行scp.sh
./scp.sh

在这里插入图片描述

2.多次交互

a.直接使用scp命令拷贝文件

如果两台机器没有建立互信执行scp命令拷贝文件需要先确认是否连接然后再输密码,如下图所示:
在这里插入图片描述

b.新建脚本文件scp.sh
touch /opt/scp.sh
c.scp.sh文件中添加以下内容
#!/usr/bin/expect
spawn scp /opt/test.txt root@192.168.233.233:/home/highgo
expect {
"*yes/no" {send "yes\n"; exp_continue}
"*password" {send "123456\n"}
}
expect eof
d.scp.sh文件添加执行权限
chmod +x scp.sh
e.执行scp.sh
./scp.sh

在这里插入图片描述

3.使用注意

  1. 匹配的字符串和发送的字符串必须是用双引号括起来,不能用单引号
  2. send命令发送的字符串中要带【\n】即回车
  3. 用scp命令源文件路径要具体到文件,不能用*代替
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值