热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python中的pexpect模块与Linux中的expect命令

本文介绍了Linux系统中的expect命令及其在自动化任务中的应用,同时探讨了Python中的pexpect模块如何实现类似功能。

参考:

https://www.cnblogs.com/lzrabbit/p/4298794.html

Expect 是 Linux 系统中用于与子进程进行交互的命令,广泛应用于自动化任务。Python 中有一个名为 pexpect 的模块,提供了类似的功能。

例如,使用 SSH 登录时需要输入密码,可以利用 Expect 自动完成这一过程。同样,修改用户密码时也可以使用 Expect 来替代手动操作。

Expect 支持多种执行方式,包括交互式、执行文件和直接执行命令。

1. 交互式

在命令行中输入 expect 进入交互模式。常用命令如下:

  • send: 发送字符串到子进程或当前进程,注意字符串末尾需加 \n 作为结束符。
  • expect: 期望的字符串。
  • spawn: 启动一个子进程。
  • interact: 使用户能够与子进程交互。

2. 将 Expect 命令写入文件并执行

Expect 最常用的语法是基于 Tcl 语言的模式-动作结构。通过多分支匹配字符串并执行相应的动作。

expect { "hi" { send "You said hi\n" } "hello" { send "Hello yourself\n" } "bye" { send "That was unexpected\n" } }

示例脚本:

#!/usr/bin/expect -f set ipaddr "192.168.16.222" set passwd "yourpasswd" spawn ssh root@$ipaddr # expect 按顺序执行,大括号内匹配相应模式并执行相应命令。 expect { "(yes/no)?" { send "yes\n" expect "assword:" { send "$passwd\n" } } "assword:" { send "$passwd\n" } }

3. 使用 -c 参数直接在命令行中执行

expect -c 'expect "dddd" {send "dddd"}'

推荐阅读
  • 在DELL Inspiron 14R上部署CentOS X64 6.4的详细步骤
    本文详细记录了在DELL Inspiron 14R笔记本电脑上安装CentOS X64 6.4操作系统的过程,包括遇到的问题及解决方法。 ... [详细]
  • Django xAdmin 使用指南(第一部分)
    本文介绍如何在Django项目中集成和使用xAdmin,这是一个增强版的管理界面,提供了比Django默认admin更多的功能。文中详细描述了集成步骤及配置方法。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 本文详细介绍了 Python 中的 with 语句及其背后的上下文管理器机制,从基本概念入手,通过具体示例和原理分析,帮助读者深入理解这一重要的资源管理工具。 ... [详细]
  • 本文详细介绍如何在Windows 7操作系统中安装Python,并在IIS (Internet Information Services) 中配置Python脚本的运行环境。步骤包括安装必要的组件、配置IIS处理程序映射以及测试Python脚本的执行。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • RedHat 系统下配置国内 YUM 源以替代官方收费源的方法
    本文详细介绍如何在 RedHat Linux 中安装并配置 YUM 包管理器,并通过使用国内镜像源来解决因未购买官方服务而导致的更新源限制问题。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • Python数据类型6 字典
    字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 新手指南:在Windows 10上搭建深度学习与PyTorch开发环境
    本文详细记录了一名新手在Windows 10操作系统上搭建深度学习环境的过程,包括安装必要的软件和配置环境变量等步骤,旨在帮助同样初入该领域的读者避免常见的错误。 ... [详细]
  • 本文探讨了如何在Android应用中实现图片的保存至外部存储,并通过原生方式分享这些图片。主要介绍了保存图片的不同策略以及通过Intent进行文件分享的具体步骤。 ... [详细]
  • Description“第一分钟,X说,要有矩阵,于是便有了一个里面写满了\(0\)的\(n\timesm\)矩阵。第二分钟,L说,要能修改,于是便有了将左上角为\((a,b)\) ... [详细]
  • 本文介绍了如何计算给定数组中所有非质数元素的总和,并提供了多种编程语言的实现示例。 ... [详细]
  • 本文探讨了Java中char数据类型的特点,包括其表示范围以及如何处理超出16位字符限制的情况。通过引入代码点和代码单元的概念,详细解释了Java处理增补字符的方法。 ... [详细]
author-avatar
hahah
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有