当前位置: 首页 > news >正文

expect自动化交互应用程序工具

目录

安装 expect

语法介绍

基本命令

控制结构

变量和字符串

样例 expect 脚本

Example 1: 自动登录 SSH 并执行命令

Example 2: 自动与 FTP 服务器交互

Example 3: 与 telnet 自动交互

调试与运行脚本

调试模式

运行脚本

sshpass与expect应用-CSDN博客


  expect 是一个用于自动化交互应用程序的工具,主要在 UNIX 系统上使用。它可以通过脚本控制和自动化与其他交互式程序的对话,例如 sshftptelnet 等等。expect 使得自动执行一些需要用户输入的命令变得非常简单和方便。

安装 expect

sudo yum -y install expect

语法介绍

基本命令
  • spawn:启动一个进程并进入交互模式。
  • expect:等待特定的模式或字符串出现。
  • send:发送字符串到启动的进程(模拟用户输入)。
  • interact:允许用户接管控制,手动进行交互。
  • exp_continue:继续期待下一个模式匹配,这是在 expect 块中常用的命令。
  • expect eof :  结束expect匹配

控制结构
  • if:条件判断语句。
  • while:循环语句。
  • for:for 循环语句。

变量和字符串
  • set:定义和赋值变量。
  • $:用于引用变量。

样例 expect 脚本

Example 1: 自动登录 SSH 并执行命令
#!/usr/bin/expect# 设置超时时间为20秒
set timeout 20# 变量定义
set host "your.server.com"
set user "your_username"
set password "your_password"# 开始SSH会话
spawn ssh $user@$host# 等待各种可能的提示信息
expect {"yes/no" { send "yes\r"; exp_continue }"*assword:" { send "$password\r" }
}# 执行命令
expect "$ " { send "ls -l\r" }
expect "$ " { send "echo 'Hello, World!'\r" }
expect "$ " { send "exit\r" }# 等待会话结束
expect eof

Example 2: 自动与 FTP 服务器交互
#!/usr/bin/expect# 设置超时时间
set timeout 20# 变量设置
set server "ftp.example.com"
set user "your_username"
set password "your_password"# 开始FTP会话
spawn ftp $server# 期待用户名提示
expect "Name*"
send "$user\r"# 期待密码提示
expect "Password:"
send "$password\r"# 登录后的交互
expect "ftp>" { send "ls\r" }
expect "ftp>" { send "get example.txt\r" }
expect "ftp>" { send "bye\r" }# 等待会话结束
expect eof

Example 3: 与 telnet 自动交互
#!/usr/bin/expect# 设置超时时间
set timeout 20# 变量设置
set host "your.telnetserver.com"
set user "your_username"
set password "your_password"# 启动telnet会话
spawn telnet $host# 等待各种可能的提示信息
expect {"login:" { send "$user\r" }"Username:" { send "$user\r" }"*username:" { send "$user\r" }
}# 期待出现的密码提示
expect "*assword:" { send "$password\r" }# 登录后执行命令
expect "> " { send "help\r" }
expect "> " { send "exit\r" }# 等待会话结束
expect eof

调试与运行脚本

调试模式

使用 expect 提供的一些选项可以进行调试。

  • -d:启用调试模式,输出期望和接收到的内容。
  • log_user 1 or log_user 0:打开或关闭标准输出日志。打开时,所有 send 和 expect 操作都会在终端输出。关闭时则不会。

例如:

expect -d ./your_expect_script.exp

运行脚本

保存脚本到文件并确保它具有可执行权限:

chmod +x your_expect_script.exp
./your_expect_script.exp

相关文章:

  • 【文件导出2】导出html文件数据
  • C# 绘图及古诗填字
  • Android基础-进程间通信
  • 熟悉的软件架构风格及详细介绍
  • 自动驾驶人工智能
  • 【深度学习】之 卷积(Convolution2D)、最大池化(Max Pooling)和 Dropout 的NumPy实现
  • arm系统中双网卡共存问题
  • 区块链共识机制技术一--POW(工作量证明)共识机制
  • Transformer论文精读
  • App UI 风格,引领时尚
  • 无头+单向+非循环链表的实现
  • web学习笔记(六十五)
  • Recognize Anything: A Strong Image Tagging Model(RAM模型使用方法)
  • 各品牌电视安装第三方软件失败的解决方法
  • 理解数仓建模
  • bootstrap创建登录注册页面
  • centos安装java运行环境jdk+tomcat
  • C学习-枚举(九)
  • java8 Stream Pipelines 浅析
  • js递归,无限分级树形折叠菜单
  • MySQL QA
  • mysql中InnoDB引擎中页的概念
  • SSH 免密登录
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 对象引论
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 为什么要用IPython/Jupyter?
  • 用Canvas画一棵二叉树
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​香农与信息论三大定律
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (4)事件处理——(7)简单事件(Simple events)
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (pojstep1.3.1)1017(构造法模拟)
  • (ZT)一个美国文科博士的YardLife
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (简单) HDU 2612 Find a way,BFS。
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .Net Core 中间件与过滤器
  • .NET 中 GetProcess 相关方法的性能
  • .NET项目中存在多个web.config文件时的加载顺序
  • @SentinelResource详解
  • [ABC294Ex] K-Coloring
  • [APIO2015]巴厘岛的雕塑
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [C#]猫叫人醒老鼠跑 C#的委托及事件
  • [CLickhouse] 学习小计
  • [EFI]Dell Inspiron 15 5567 电脑 Hackintosh 黑苹果efi引导文件
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件