expect

返回主页

一、什么是expect?

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

二、安装expect

# 安装 expect
yum -y install expect

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.48101.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
展开/折叠菜单
47 预览数量 2024-03-26 10:31:02 发布 时间
目录
赞数量
评论数量
返回顶部
暂无评论

暂无评论