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

2024-06-05 20:28

本文主要是介绍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

这篇关于expect自动化交互应用程序工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1034086

相关文章

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Java中基于注解的代码生成工具MapStruct映射使用详解

《Java中基于注解的代码生成工具MapStruct映射使用详解》MapStruct作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案,本文主要为大家介绍了它的具体使用,感兴趣... 目录介绍优缺点优点缺点核心注解及详细使用语法说明@Mapper@Mapping@Mappings@Co

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

使用Python实现图片和base64转换工具

《使用Python实现图片和base64转换工具》这篇文章主要为大家详细介绍了如何使用Python中的base64模块编写一个工具,可以实现图片和Base64编码之间的转换,感兴趣的小伙伴可以了解下... 简介使用python的base64模块来实现图片和Base64编码之间的转换。可以将图片转换为Bas