前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux expect 自动交互脚本用法

Linux expect 自动交互脚本用法

作者头像
Li_XiaoJin
发布2022-06-12 10:56:22
1.7K0
发布2022-06-12 10:56:22
举报
文章被收录于专栏:Lixj's Blog

最近用到自动交互脚本进行数据库备份,以前虽然也有用来使用 ftp 远程获取文件,还来没有系统记录过,趁这次机会总结一下。

安装 expect

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

expect自动交互流程:

  1. spawn启动指定进程
  2. expect获取指定关键字
  3. send向指定程序发送指定字符
  4. 执行完成退出.

注意该脚本能够执行的前提是安装了 expect。 所以首先需要完成安装,安装很简单,直接使用 yum 进行安装。

expect 依赖于 tcl,需先安装 tcl 使用 yum list tcl 获取列表,再通过 yum install tcl.x86_64

接着安装 expect,yum install expect

四个命令

Expect中最关键的四个命令是send,expect,spawn,interact。

  • send:用于向进程发送字符串
  • expect:从进程接收字符串
  • spawn:启动新的进程
  • interact:允许用户交互

常用命令

代码语言:javascript
复制
spawn               交互程序开始后面跟命令或者指定程序
expect              获取匹配信息匹配成功则执行expect后面的程序动作
send exp_send       用于发送指定的字符串信息
exp_continue        在expect中多次匹配就需要用到
send_user           用来打印输出 相当于shell中的echo
exit                退出expect脚本
eof                 expect执行结束 退出
set                 定义变量
puts                输出变量
set timeout         设置超时时间

使用示例

下面以我最近使用的脚本来一行行进行分析。

代码语言:javascript
复制
#!/usr/bin/expect    # 这个必须放在首行,可以通过 whereis expect 获取到路径
set timeout -1        # 设置超时时间,不限制时间可以设置为 -1
set user root        # 设置 变量user
set pass 123456        # 设置 变量pass
set dir /data/pgsql_bak_data
set ip 192.168.2.1
set filen /data/pgsql_bak_data/pgsql.sql
set date [ clock format [ clock seconds ] -format "%Y%m%d" ]

# spawn启动指定进程,使用 scp 命令将本地文件上传至远程主机
spawn scp ${filen}_${date} ${user}@${ip}:${dir}
# 判断上次输出结果里是否包含“${user}@${ip}'s password:”的字符串,如果有则立即返回,否则就等待一段时间(timeout)后返回
expect "${user}@${ip}'s password:"
# 发送内容pass,类似于我们使用时输入密码,将该步骤交给脚本完成
send "${pass}\r"
# 执行完成后自动退出
expect eof

结合以上,想必读者对这个命令应该也有所了解了,照葫芦画瓢,可以实现很多场景,如ssh、ftp等,可以大大提高我们的效率,expect还是很强大的。

这里我只会一些简单的应用,没有专业运维使用得这么熟练。见谅~

免交互expect eof和interact的区别

二者都是结束符号

  • expect eof :等待执行结束,用于执行自动化任务,无需后续继续交互,直接完成并退出。
  • interact:执行完成后保持交互状态,把控制权交给用户,不是免交互的状态,需要自行输入需要执行的命令。

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://cloud.tencent.com/developer/article/2020776

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装 expect
  • 四个命令
  • 常用命令
  • 使用示例
  • 免交互expect eof和interact的区别
相关产品与服务
数据库备份服务
数据库备份服务(Database Backup Service,简称 DBS)是为用户提供连续数据保护、低成本的备份服务。数据库备份拥有一套完整的数据备份和数据恢复解决方案,具备实时增量备份以及快速的数据恢复能力,它可以为多种部署形态的数据库提供强有力的保护,包括企业 IDC 数据中心、其他云厂商数据库及腾讯公有云数据库。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档