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基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1