首页 > 系统相关 >wexpect - 一个可以自动化交互式shell输入的库

wexpect - 一个可以自动化交互式shell输入的库

时间:2022-12-03 01:11:47浏览次数:58  
标签:shell python ret expect 交互式 child print wexpect

linux下有个pexpect的lib,可以实现一些交互式输入,pexpect网上的教程很多, 这里就不多说了;

但这个库不能用于windows,如果要实现windows下shell自动化交互式操作的话,可以参考python的wexpect

官方文档: https://wexpect.readthedocs.io/en/stable/index.html?highlight=wexpect

                https://pexpect.readthedocs.io/en/stable/overview.html#windows

安装

pip install wexpect

这个wexpect库对python版本有要求, 太旧的python版本无法安装,强行安装后也无法使用

Pexpect 需要 Python 3.3 或更高版本,或 Python 2.7,  那wexpect大概也是如此。

血的教训: 我第一次就强行装了wexpect,但是无法正常使用,就放弃了,但估计就是python版本问题,后来查阅资料,尝试安装activaTCL和expect.exe想用于交互式自动化,但要么就是网上的链接失效,要么就是找不到教程里的工具,再次放弃,这次重装了python,wexpect就可以正常使用了

简单使用

import wexpect
child = wexpect.spawn('c:\python38\python.exe')
ret = child.expect('>>>')
print("ret1",ret)
child.sendline('print(123456789)')
ret=child.expect('>>>')
print("ret2",ret)
print("++++++++++++++++",child.before,"---------------------")
print("******************",child.after,"******************")

child.sendline('print(987565)')
ret=child.expect('>>>')
print("ret3",ret)
print("++++++++++++++++",child.before,"---------------------")
print("******************",child.after,"******************")

child.sendline('a=100')
child.expect('>>>')
child.sendline('b=200')
child.expect('>>>')
child.sendline('print("a+b =",a+b)')
ret=child.expect('>>>')
print("ret4",ret)
print("++++++++++++++++",child.before,"---------------------")
print("******************",child.after,"******************")
child.sendline('exit()')
ret1 0
ret2 0
++++++++++++++++  print(123456789)
123456789
 ---------------------
****************** >>> ******************
ret3 0
++++++++++++++++  print(987565)
987565
 ---------------------
****************** >>> ******************
ret4 0
++++++++++++++++  print("a+b =",a+b)
a+b = 300
 ---------------------
****************** >>> ******************

unbelievable, 我打开了python交互式,并且交互式输入并计算其结果,读取返回值,这样一来就可以在我们pythonsv和csripts的自动化相关脚本里使用了.

subprocess也可以用于交互式,但是没有这个lib这么自由.

 

标签:shell,python,ret,expect,交互式,child,print,wexpect
From: https://www.cnblogs.com/pfeiliu/p/16946081.html

相关文章

  • 算法工程师资料分享(算法基础 推荐算法 编程 python java c++ shell sql 数据结构 竞
    关注公众号:后厂村搬砖工。回复:学习资料汇总即可领取目录一、算法基础1.1学习路线1.2学习资料推荐二、编程能力2.1Python编程2.2Java编程2.3C++编程2.4Shell......
  • shell 编程变量使用心得
    类型示例用途大写的变量名IP表示常量,比如,用来记录输入和输出文件名小写变量名mac一般变量左边下划线_mac临时的中间变量,只引用一次的变量右边下......
  • shell查询进程杀死进程并等待进程退出
    查询并杀死进程stop_service(){ #查询Java进程ID localpid=$(ps-ef|grepjava|grep"${process_keyword}"|grep-vgrep|awk'{print$2}')#如果......
  • Hbase_Shell
    Hbase常用Shell命令一、基本命令        1.1获取帮助        1.2查看服务器状态        1.3查看版本信息二、关于表的操作    ......
  • MYSQL BACKUP的SHELL相关语句
    #!/bin/bash###############Basicparameters##########################DAY=`date+%Y%m%d`Environment=$(/sbin/ifconfig|grep"inetaddr"|head-1|grep-v"127.0.......
  • 笔记: MYSQL BACKUP的SHELL相关语句
    #!/bin/bash ###############Basicparameters########################## DAY=`date+%Y%m%d` Environment=$(/sbin/ifconfig|grep"inetaddr"|head-1|grep-......
  • 16Linux大数据定制篇Shell
    ShellShell快速入门实例sh./myShell.sh可在无执行权限下强制执行(了解)变量Shell变量介绍输出系统变量自定义变量静态变量(readonly)不能unset基础规则......
  • Linux将shell脚本设置为自动启动项
    Linux系统下如何设置开机启动项1.修改/etc/rc.d/rc.local文件,在rc.local后面加上你的shell脚本命令赋值权限chmodu+xapp.sh修改后的rc.local如下#!/bin/bash#THISFILE......
  • SHELL脚本
    完成一个shell脚本,脚本的作用。1.运行脚本可以显示出本机的ip地址2.如果ip地址中有3这个数字,那么就打印出当前的系统时间3.如果ip地址中不含3这个数字,就批量建立用户mag......
  • 简单的一键部署LNMP架构shell脚本
    两种部署方式:一、手工搭建分析:最终效果,通过Nginx搭建两个网站blog和zh,通过域名访问。在lnmp的基础上,域名访问,要么搭建DNS服务器,要么修改主机hosts文件。1、安装Nginx:进入y......