返回顶部
首页 > 资讯 > 后端开发 > Python >Python 之 pexpect模块
  • 570
分享到

Python 之 pexpect模块

模块Pythonpexpect 2023-01-31 05:01:32 570人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

python安装setuptools模块之后,便可使用easy_install来安装Python的第三方扩展模块,默认安装路径是:/usr/lib/python2.6/site-packages/easy_install 模块名 #可以直接

python安装setuptools模块之后,便可使用easy_install来安装Python的第三方扩展模块,默认安装路径是:

/usr/lib/python2.6/site-packages/

easy_install 模块名 #可以直接安装
easy_install  pexpect
[root@zhu ~]# easy_install pexpect
Searching for pexpect
Reading Http://pypi.python.org/simple/pexpect/
Reading http://pexpect.readthedocs.org/
Reading http://pexpect.sourceforge.net/
Reading http://sourceforge.net/project/showfiles.PHP?group_id=59762
Best match: pexpect 3.1
Downloading https://pypi.python.org/packages/source/p/pexpect/pexpect-3.1.tar.gz#md5=5a8e1573062e2e2c203c9a6d213b16e7
Processing pexpect-3.1.tar.gz
Running pexpect-3.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-KOPmVQ/pexpect-3.1/egg-dist-tmp-GnQBTg
zip_safe flag not set; analyzing arcHive contents...
Adding pexpect 3.1 to easy-install.pth file
Installed /usr/lib/python2.6/site-packages/pexpect-3.1-py2.6.egg
Processing dependencies for pexpect
Finished processing dependencies for pexpect
#由于pexpect-3.1-py2.6.egg此时仍是一个压缩文件,所以需要进行解压。
cd /usr/lib/python2.6/site-packages/
unzip pexpect-3.1-py2.6.egg

pexpect是一个用来启动子程序并对其进行自动控制的python模块,可以用来和ssh,ftp,telnet等需要输入密码的命令行程序进行自动交互。

安装过程如上。

另一种安装方法如下:

wget http://pexpect.sourceforge.net/pexpect-2.3.tar.gz
 tar xzf pexpect-2.3.tar.gz
 cd pexpect-2.3
 python ./setup.py install

pexpect 模块的使用如下:

>>> pexpect.
pexpect.EOF(                 pexpect.__path__             pexpect.run(
pexpect.ExceptionPexpect(    pexpect.__reduce__(          pexpect.runu(
pexpect.PY3                  pexpect.__reduce_ex__(       pexpect.searcher_re(
pexpect.TIMEOUT(             pexpect.__repr__(            pexpect.searcher_string(
pexpect.__all__              pexpect.__revision__         pexpect.select
pexpect.__class__(           pexpect.__setattr__(         pexpect.signal
pexpect.__delattr__(         pexpect.__sizeof__(          pexpect.spawn(
pexpect.__dict__             pexpect.__str__(             pexpect.spawnu(
pexpect.__doc__              pexpect.__subclasshook__(    pexpect.split_command_line(
pexpect.__file__             pexpect.__version__          pexpect.struct
pexpect.__fORMat__(          pexpect._run(                pexpect.sys
pexpect.__getattribute__(    pexpect.codecs               pexpect.termiOS
pexpect.__hash__(            pexpect.errno                pexpect.time
pexpect.__init__(            pexpect.fcntl                pexpect.traceback
pexpect.__loader__           pexpect.os                   pexpect.tty
pexpect.__name__             pexpect.pty                  pexpect.types
pexpect.__new__(             pexpect.re                   pexpect.which(
pexpect.__package__          pexpect.resource

1.pexpect.run()函数的使用

run(command, timeout=-1, withexitstatus=False, events=None, extra_args=None, logfile=None, cwd=None, env=None)
#默认情况下该指令:
#1.运行给出的指令command,如果指令不是以绝对路径给出,会自动在PATH中寻找。结果输出作为字符串返回,行与行之间以\r\n分割。
#2.withexitstatus设置为True时,结果返回一个元组,(command_output,
    exitstatus)
#events是一个字典,有模式和应答组成,可以自动输入内容,如果应答需要输入enter键时,此时需要为一个新行,即添加\n.
>>> pexpect.run('cat /root/a.txt')
'qian shan\r\nniao fei jue\r\ndu diao han jiang xue\r\n'
>>> pexpect.run('cat /root/a.txt',withexitstatus=1)
('qian shan\r\nniao fei jue\r\ndu diao han jiang xue\r\n', 0)
>>> pexpect.run('scp /root/a.txt 192.168.56.102:/root',withexitstatus=1,events={'passWord': '123456\n'})
("root@192.168.56.102's password: \r\n\ra.txt                                           0%    0     0.0KB/s   --:-- ETA\ra.txt                                         100%   45     0.0KB/s   00:00    \r\n", 0)

2.pexpect.spawn()类的使用

spawn是Pexpect模块主要的类,用以实现启动子程序,它有丰富的方法与子程序交互从而实现用户对子程序的控制。它主要使用 pty.fork() 生成子进程,并调用 exec() 系列函数执行 command 参数的内容。

child = pexpect.spawn ('/usr/bin/ftp') #执行ftp客户端命令
child = pexpect.spawn ('/usr/bin/ssh user@example.com') #使用ssh登录目标机器
child = pexpect.spawn ('ls -latr /tmp') #显示 /tmp目录内容
child = pexpect.spawn ('/usr/bin/ftp', [])
child = pexpect.spawn ('/usr/bin/ssh', ['user@example.com'])
child = pexpect.spawn ('ls', ['-latr', '/tmp'])
child = pexpect.spawn('some_command')
fout = file('mylog.txt','w')
child.logfile = fout
child = pexpect.spawn('ssh root@192.168.56.102')
child.expect(self, pattern, timeout=-1, searchwindowsize=-1)
为了控制子程序,等待子程序产生特定输出,做出特定的响应,可以使用 expect 方法
在参数中: pattern 可以是正则表达式, pexpect.EOF , pexpect.TIMEOUT ,或者由这些元素组成的列表。需要注意的是,当 pattern 的类型是一个列表时,且子程序输出结果中不止一个被匹配成功,则匹配返回的结果是缓冲区中最先出现的那个元素,或者是列表中最左边的元素。使用 timeout 可以指定等待结果的超时时间 ,该时间以秒为单位。当超过预订时间时, expect 匹配到pexpect.TIMEOUT。

3.打印before的内容

>>> child = pexpect.spawn('ls -l')
>>> child.expect(pexpect.EOF)
0
>>> print child.before
总用量 64
drwxr-xr-x.  3 root root  4096 4月   2 10:09 aaa
-rw-r--r--.  1 root root    45 4月   3 15:01 a.txt
drwxr-xr-x. 16 root root  4096 3月   6 21:36 biaozhunku
drwxr-xr-x.  2 root root  4096 3月  27 17:03 mypython
drwxr-xr-x.  2 root root  4096 4月   3 13:21 mysource
drwxr-xr-x.  2 root root  4096 4月   3 13:20 mywork
drwxr-xr-x.  2 root root 36864 3月  19 11:09 pythoncook
-rw-r--r--.  1 root root   276 4月   3 14:26 zhu.py
#child.before 保存的就是在根目录下执行 ls 命令的结果
send(self, s)
sendline(self, s='')
sendcontrol(self, char)
这些方法用来向子程序发送命令,模拟输入命令的行为。与 send() 不同的是 sendline() 会额外输入一个回车符 ,更加适合用来模拟对子程序进行输入命令的操作。当需要模拟发送 “Ctrl+c” 的行为时,还可以使用 sendcontrol() 发送控制字符。





















--结束END--

本文标题: Python 之 pexpect模块

本文链接: https://lsjlt.com/news/189169.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python模块之pexpect
    pexpect是一个用来启动子程序并对其进行自动控制的 Python 模块。pexpect 可以用来和像 ssh、passwd、telnet 、rsync等命令行程序进行自动交互下面是我用pexpect写的一个脚本,是用来执行远程主机命令,...
    99+
    2023-01-31
    模块 Python pexpect
  • Python 之 pexpect模块
    python安装setuptools模块之后,便可使用easy_install来安装python的第三方扩展模块,默认安装路径是:/usr/lib/python2.6/site-packages/easy_install 模块名 #可以直接...
    99+
    2023-01-31
    模块 Python pexpect
  • python pexpect 模块
    Pexpect 模块 两个主要接口 pexpect.run('ls -la')   child = pexpect.spawn('scp foo myname@host.example.com:.')         child.expec...
    99+
    2023-01-31
    模块 python pexpect
  • Python模块pexpect安装及使用流程
    目录一、pexpect模块介绍二、Pexpect的安装三、pexpect的核心组件3.1spawn类3.1.1简介3.1.2使用流程3.1.4基本属性和方法3.1.5其他发送信息的方...
    99+
    2024-04-02
  • pexpect模块实现ssh交互命令
    [root@localhost ~]# cat ex_ssh.py #!/usr/local/python3/bin/python3import pexpectdef exec_command(user,host,password): ne...
    99+
    2023-01-31
    模块 命令 pexpect
  • python之pexpect用法及scp
     import pexpect def scp_cmd():     passwd='*******'     passwd1='*******'     ssh = pexpect.spawn('scp -rp root@192.168....
    99+
    2023-01-31
    python pexpect scp
  • python pexpect
    Python 远程批量修改密码脚本 #tar -zxvf pexpect-3.0.tar.gz #cd pexpect-3.0 #python setup.py install #!/usr/bin/env python #coding:u...
    99+
    2023-01-31
    python pexpect
  • Python时间模块之datetime模块
    目录 简介 函数介绍及运用 date:日期类 1.获取当前时间  2.日期对象的属性 3.date类中时间和时间戳的转换: 4.修改日期使用replace方法  time:时间类  time类操作 datetime:日期时间类 timede...
    99+
    2023-09-12
    python datetime python 日期时间
  • Python模块学习之IPy模块
    IP地址规划是网络设计中非常重要的一个环节,规划的好坏会直接影响路由协议算法的效率,包括网络性能、可扩展性等方面,在这个过程当中,免不了要计算大量的IP地址,包括网段、网络掩码、广播地址、子网数、IP类型等。Python提供了一个强大的第...
    99+
    2023-01-31
    模块 Python IPy
  • python之MySQLdb模块
    防伪码:忘情公子著  MySQLdb是用来通过python控制mysql数据库的一个模块。  在说这个模块之前,我们先来想一下在命令行模式下操作mysql数据库的步骤,一般来说分为三步:...
    99+
    2024-04-02
  • python之re模块
    python 中使用正则表达式需要引入re模块,用来匹配处理字符串  如: import re #第一步,要引入re模块 a = re.findall("匹配规则", "要匹配的字符串") #第二步,调用模块函数 以列表形式返回匹配到的字...
    99+
    2023-01-30
    模块 python
  • python之shutil模块
    shutil:高级的 文件、文件夹、压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length])(copyfileobj方法只会拷贝文件内容)将文件内容拷贝到另一个文件中 import shu...
    99+
    2023-01-30
    模块 python shutil
  • python之os模块
    #OS模块 #os模块就是对操作系统进行操作,使用该模块必须先导入模块:import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) #chdir()改变当前工作目录 #操作时如果书写完整的路径则不...
    99+
    2023-01-30
    模块 python os
  • python模块之collections
    计数器 Counter 计数元素迭代器 elements() 计数对象拷贝 copy() 计数对象清空 clear() from collections import Counter #import collection...
    99+
    2023-01-30
    模块 python collections
  • python之selectors模块
      selectors模块是在python3.4版本中引进的,它封装了IO多路复用中的select和epoll,能够更快,更方便的实现多并发效果。  官方文档见:https://docs.python.org/3/library/...
    99+
    2023-01-31
    模块 python selectors
  • python模块之configparse
    configparser configParser 模块用于操作配置文件 注:Parser汉译为“解析”之意。 配置文件的格式与windows ini文件类似,可以包含一个或多个节(section),每个节可以有多个参数(键=值或者键:值)...
    99+
    2023-01-31
    模块 python configparse
  • python模块之base64
    base64模块提供了在二进制数据和可打印ASCII字符间编解码的功能,包括RFC3548中定义的Base16, Base32, Base64, Ascii85, Base85等编码。 RFC3548中定义的编码适用于将二进制数据编码后,...
    99+
    2023-01-31
    模块 python
  • python模块之subprocess
    subprocess.run() 运行并等待args参数指定的指令完成,返回CompletedProcess实例。 参数:(*popenargs, input=None, capture_output=False, timeout=Non...
    99+
    2023-01-31
    模块 python subprocess
  • python模块之shutil
    shutil模块提供了一些针对文件和目录的高级操作,主要是拷贝、移动。对于单个文件的操作,还可参考os模块 Warning:即使是高级别的拷贝函数(shutil.copy(),shutil.copy2())也不能拷贝所有的文件元数据。意思...
    99+
    2023-01-31
    模块 python shutil
  • python模块之hashlib
    hashlib模块实现了多种安全哈希和信息摘要算法的通用接口,包括FIPS中定义的SHA1, SHA224, SHA256, SHA384, SHA512以及RFC 1321中定义的MD5 注意点:1. adler32及crc32哈希由z...
    99+
    2023-01-31
    模块 python hashlib
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作