Pexpect 是一个 Python 库,用于自动化与终端交互的任务

这篇具有很好参考价值的文章主要介绍了Pexpect 是一个 Python 库,用于自动化与终端交互的任务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Pexpect 是一个 Python 库,用于自动化与终端交互的任务。它提供了一种简单的方式来编写脚本,以便与终端程序进行交互。以下是 Pexpect 的一些常用参数和方法的更详细说明:

常用参数:

command:这是你想要启动的命令行程序的路径。例如,如果你想要启动一个名为 ‘ftp’ 的程序,你可以传递 ‘/usr/bin/ftp’ 作为这个参数的值。

timeout:这是你愿意等待命令行程序输出的最大时间(以秒为单位)。如果在这个时间内,你没有从命令行程序收到任何输出,Pexpect 将引发一个超时异常。

maxread:这是你想要从命令行程序中读取的最大字节数。默认值是 2000,即最多读取 2000 个字节。

searchwindowsize:这是你想要搜索的字符串或正则表达式的窗口大小。默认值是 25,这意味着 Pexpect 将只检查最近的 25 个字符或行来寻找匹配项。

logfile:这是一个文件对象,Pexpect 将把所有标准输出和标准错误输出重定向到这个文件。如果你不提供这个参数,输出将仍然显示在控制台上。
常用方法:

spawn()
这是启动一个新的命令行程序的方法。你可以传递一个命令行程序的路径作为参数。例如,ftp = pexpect.spawn(‘/usr/bin/ftp’) 将启动 FTP 客户端。
expect()
这是等待命令行程序输出特定字符串或正则表达式的方法。你可以传递一个字符串或正则表达式作为参数,然后 Pexpect 将等待直到程序输出这个字符串或正则表达式。例如,ftp.expect('ftp> ') 将等待直到 FTP 客户端提示你输入命令。
sendline()
这是向命令行程序发送一行命令的方法。你可以传递一个字符串作为参数,然后 Pexpect 将把这个字符串发送给程序。例如,ftp.sendline(‘ls’) 将发送 ‘ls’ 命令到 FTP 客户端,然后等待程序输出结果。
close()
这是关闭与命令行程序的连接的方法。当你完成与程序的交互后,你应该调用这个方法来释放资源。例如,ftp.close() 将关闭与 FTP 客户端的连接。
interact()
这是启动交互模式的方法。在交互模式下,你可以手动控制与命令行程序的交互。例如,你可以使用键盘输入命令,然后使用 sendline() 方法将它们发送到程序。

Pexpect可以通过以下方式进行安装:

pip安装:在命令行输入pip3 install pexpect即可。

easy_install安装:在命令行输入easy_install pexpect即可。

源码安装:下载Pexpect的源代码包,解压后进入目录,然后在命令行输入python setup.py install即可。

#下载tcl源码包:
wget http://prdownloads.sourceforge.net/tcl/tcl8.4.20-src.tar.gz。
#解压并编译安装tcl:
tar zxvf tcl8.4.20-src.tar.gz,cd tcl8.4.20/unix/,./configure --prefix=/usr/tcl --enable-shared,make,make install。
#下载expect源码包:wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz。
#解压并编译安装expect:
tar zxvf expect5.45.tar.gz,
cd expect5.45,
./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.20/generic/,
make,
make install
#安装完成之后做一个软连接:
ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
#加入环境变量并测试:
echo 'export PATH=$PATH:/usr/expect/bin' >> /etc/profile

示例:

#!/usr/bin/env python
import pexpect
devices = {'iosv-1': {'prompt': 'lax-edg-r1#', 'ip': '192.168.2.51'},
 'iosv-2': {'prompt': 'lax-edg-r2#', 'ip': '192.168.2.52'}}
username = 'cisco'
password = 'cisco'
for device in devices.keys():
 device_prompt = devices[device]['prompt']
 child = pexpect.spawn('telnet ' + devices[device]['ip'])
 child.expect('Username:')
 child.sendline(username)
 child.expect('Password:')
 child.sendline(password)
 child.expect(device_prompt)
 child.sendline('show version | i V')
 child.expect(device_prompt)
 print(child.before)
 child.sendline('exit')

ssh:

from pexpect import pxssh
>>> child = pxssh.pxssh()
>>> child.login('192.168.2.51', 'cisco', 'cisco', auto_prompt_reset=False) 
True
>>> child.sendline('show version | i V')
19
>>> child.expect('lax-edg-r1#')
0
>>> child.before
b'show version | i V\r\nCisco IOS Software, IOSv Software (VIOSADVENTERPRISEK9-M), Version 15.8(3)M2, RELEASE SOFTWARE (fc2)\r\nProcessor 
board ID 98U40DKV403INHIULHYHB\r\n'
>>> child.logout()

ftp:

import pexpect

# 启动 FTP 子程序
ftp = pexpect.spawn('ftp')

# 期望看到 'ftp>' 提示符
ftp.expect('ftp> ')

# 发送用户名和密码(假设为 'user' 和 'pass')
ftp.sendline('user')
ftp.sendline('pass')

# 期望登录成功
ftp.expect('230 Login successful')

# 发送命令 'dir' 查看目录列表
ftp.sendline('dir')
ftp.expect('Directory listing')

# 关闭 FTP 子程序
ftp.sendline('bye')

log:

import pexpect
import time

# 创建日志文件并设置 Pexpect 记录日志
log_file = open('ftp_log.txt', 'w')
ftp = pexpect.spawn('ftp', logfile=log_file)
time.sleep(2)  # 让子程序运行一段时间以便记录日志
log_file.close()  # 关闭日志文件

telnet:文章来源地址https://www.toymoban.com/news/detail-770254.html

import pexpect

# 启动 Telnet 子程序
telnet = pexpect.spawn('telnet', ['hostname', 'port'])

# 期望看到 Telnet 提示符
telnet.expect('login: ')

# 发送用户名和密码(假设为 'user' 和 'pass')
telnet.sendline('user')
telnet.expect('Password:')
telnet.sendline('pass')

# 期望登录成功并看到提示符(例如 '#' 或 '$')
telnet.expect('#')

# 使用 interact 方法进行交互(注意:interact 方法会阻塞程序执行直到子程序关闭)
telnet.interact()

到了这里,关于Pexpect 是一个 Python 库,用于自动化与终端交互的任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Selenium UI自动化测试_python 自动化ui测试,Kotlin可能带来的一个深坑

    :层级选取,如:#formspaninput 举例:div.entry-sider-panelsection.entry-sider-panel__bddivdiv:nth-child(1) 3.3 元素操作 3.3.1 输入内容 send_keys() 3.3.2 点击元素 click() 3.3.3 清空元素文本内容 clear() 3.3.4 获取元素文本 text 返回的是字符串 3.3.5 获取元素尺寸 size 返回的是字典 3.3.6 获取元素的属性值

    2024年04月25日
    浏览(47)
  • python+pytest接口自动化(12)-自动化用例编写思路 (使用pytest编写一个测试脚本)

    经过之前的学习铺垫,我们尝试着利用pytest框架编写一条接口自动化测试用例,来厘清接口自动化用例编写的思路。 我们在百度搜索 天气查询 ,会出现如下图所示结果: 接下来,我们以该天气查询接口为例,编写接口测试用例脚本。 针对某个功能做接口测试,首先我们需

    2024年02月04日
    浏览(55)
  • 使用Python+selenium实现第一个自动化测试脚本

    这篇文章主要介绍了使用Python+selenium实现第一个自动化测试脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 最近在学web自动化,记录一下学习过程。 此处我选用python3.6+selenium3.0,均用

    2024年02月03日
    浏览(60)
  • optuna,一个好用的Python机器学习自动化超参数优化库

    🏷️ 个人主页 :鼠鼠我捏,要死了捏的主页  🏷️ 付费专栏 :Python专栏 🏷️ 个人学习笔记,若有缺误,欢迎评论区指正   超参数优化是机器学习中的重要问题,它涉及在训练模型时选择最优的超参数组合,以提高模型的性能和泛化能力。Optuna是一个用于自动化超参数优

    2024年02月20日
    浏览(49)
  • Selenium如何用于编写自动化测试脚本?

    Selenium如何用于编写自动化测试脚本?它提供了许多测试工具和API,可以与浏览器交互,模拟用户操作,检查网页的各个方面。下面是一些步骤,可以帮助你编写Selenium自动化测试脚本。 1、安装Selenium库和浏览器驱动程序 首先,你需要安装Selenium库和浏览器驱动程序,例如C

    2024年02月09日
    浏览(42)
  • 一个简单的接口自动化测试框架:Python+Requests+Pytest+Allure

    project:api_test ——api_keyword ————api_key.py:接口驱动类 ——case ————test_cases.py:测试套件和测试用例 ——report_allure( 无需创建 ):allure报告 ——result( 无需创建 ):测试用例运行结果 ——VAR ————VAR.py:常量类 conftest.py:项目级别fixture main.py:主函数

    2024年02月03日
    浏览(73)
  • 无线WIFI工业路由器可用于楼宇自动化

    钡铼4G工业路由器支持BACnet MS/TP协议。BACnet MS/TP协议是一种用于工业自动化的开放式通信协议,被广泛应用于楼宇自动化、照明控制、能源管理等领域。通过钡铼4G工业路由器的支持,可以使设备间实现高速、可靠的数据传输,提高自动化水平。 钡铼4G工业路由器采用高性能的

    2024年02月07日
    浏览(51)
  • 使用UI Automation库用于UI自动化测试

      📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢交流讨论:欢迎加入我们一起学习! 📢资源分享:耗时200+小时精选的「软件测试」资料包 📢 最困难的时候,也就是我们离成功不远的时候! ition(AutomationElement.NameProperty, \\\"ok\\\")); 我

    2024年01月16日
    浏览(50)
  • Linux中用于自动化交互式程序的工具!expect

    expect 是一个用于自动化交互式程序的工具,它可以模拟用户输入和接收程序的输出。它通常与Tcl脚本一起使用,但也可以与其他脚本语言一起使用。 expect 的主要功能是等待特定的字符串或正则表达式出现,然后执行相应的操作。 expect的基本语法如下: 参数说明: 代码块案

    2024年01月16日
    浏览(38)
  • 如何通过python写接口自动化脚本对一个需要调用第三方支付的报名流程进行测试?

    对于需要调用第三方支付的报名流程进行接口自动化测试,可以通过以下步骤来编写Python代码: 1. 确认API需求 首先,需要确认报名流程的API需求和预期功能。这涉及到对业务需求的理解和API设计的分析。 2. 安装依赖库 在Python程序中,需要安装requests库(用于发送HTTP请求)和

    2024年02月10日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包