精华内容
下载资源
问答
  • pexpect

    2019-09-26 06:22:05
    import pexpect ip="10.0.0.134" name="root" pwd="123456" child=pexpect.spawn('ssh %s@%s' % ("root",ip) ) # #child.expect('Are.*') 第一次运行的时候要加上这条,会有提示,后续就没有了,这个...

     

     

     

     

     服务器

    import pexpect
    
    ip="10.0.0.134"
    name="root"
    pwd="123456"
    
    
    
    child=pexpect.spawn('ssh  %s@%s' % ("root",ip)  )
    #
    #child.expect('Are.*')  第一次运行的时候要加上这条,会有提示,后续就没有了,这个要注意
    #child.sendline('yes')   
    
    child.expect ('password:')
    
    child.sendline(pwd)
    
    child.expect('$')
    
    child.sendline('df -h')
    
    child.sendline("exit")
    
    
    child.interact()
    
    child.close()

     

     

     

     

    交换机

    import pexpect  
      
    ip="10.20.9.61"  
    name="ydt961"  
    pwd="123qweasd"  
      
      
      
    child=pexpect.spawn('ssh  %s@%s' % (name,ip)  )  
    #  
    #child.expect('Are.*')
    #child.sendline('yes')
    
    child.expect ('ydt.*')  
      
    child.sendline(pwd)  
      
    child.expect('$')  
      
    child.sendline('dis cu')  
      
    child.sendline("exit")  
      
      
    child.interact()  
      
    child.close()  

     

     

    交换机

    import pexpect  
      
    ip="10.20.9.61"  
    name="ydt961"  
    pwd="123qweasd"  
      
      
      
    print('正在巡检%s' %(ip))
    child=pexpect.spawn('ssh  %s@%s' % (name,ip)  )  
    #  
    #child.expect('Are.*')
    #child.sendline('yes')
    
    child.expect ('ydt.*')  
      
    child.sendline(pwd)  
      
    child.expect('$')  
      
    child.sendline('dis cu')  
      
    child.sendline("exit")  
      
      
    child.interact()  
      
    child.close()  

     

    转载于:https://www.cnblogs.com/xiaomai-rhce/p/11585207.html

    展开全文
  • pexpect模块

    2019-09-21 09:15:26
    pexpect模块是Python应对交互式的自动化模块。 当我们使用ssh密码登录远程主机时,我们就会进入交互式界面,这样的话我们没法在一个脚本中实现ssh密码登录远程主机(当然shell其实有办法,还不少),而pexpect就是...

    pexpect模块是Python应对交互式的自动化模块。
    当我们使用ssh密码登录远程主机时,我们就会进入交互式界面,这样的话我们没法在一个脚本中实现ssh密码登录远程主机(当然shell其实有办法,还不少),而pexpect就是Python的办法。
    使用pexpect模块前记得下载

    import pexpect
    ssh = pexpect.spawn('ssh 192.168.10.102')
    res = ssh.expect(['password:','(yes/no)'],timeout=20)
    print(res)
    if res == 0:
        ssh.sendline('root')
    elif res == 1:
        ssh.sendline('yes')
        ssh.expect('password:')
        ssh.sendline('root')
    else:
        print('time out')
    ssh.interact()
    
    展开全文
  • Remove pexpect

    2020-12-09 00:43:40
    code to function without pexpect. Our use of pexpect was just around responding to prompts from git and ssh. This change works around those prompts by modifying the way that git executes so that all ...
  • python之pexpect实现自动交互

    万次阅读 2018-05-30 18:18:03
    pexpect
    Pexpect 是 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互;可以用来自动复制软件安装包并在不同机器自动安装;还可以用来实现软件测试中与命令行交互的自动化。
    整体来说大致的流程包括:
    1. 运行程序
    2. 程序要求人的判断和输入
    3. Expect 通过关键字匹配
    4. 根据关键字向程序发送符合的字符

    基本使用流程

    pexpect 的使用说来说去,就是围绕3个关键命令做操作:

    1. 首先用 spawn 来执行一个程序
    2. 然后用 expect 来等待指定的关键字,这个关键字是被执行的程序打印到标准输出上面的
    3. 最后当发现这个关键字以后,根据关键字用 send 方法来发送字符串给这个程序

    第一步只需要做一次,但在程序中会不停的循环第二、三步来一步一步的完成整个工作。掌握这个概念之后 pexpect 的使用就很容易了。当然 pexpect 不会只有这 3 个方法,实际上还有很多外围的其他方法,

    spawn() - 执行程序

    spawn() 方法用来执行一个程序,它返回这个程序的操作句柄,以后可以通过操作这个句柄来对这个程序进行操作,比如:

    process = pexpect.spawn('ftp sw-tftp')
    

    上面 spawn() 中的字符串就是要执行的程序,这里我们打开一个到 sw-tftp 服务器的 ftp 连接。 spawn() 中的第一个元素就是要执行的命令,除此之外还可以指定一些其他参数,比如: pexpect.spawn('ftp sw-tftp', timeout=60) 就指定了超时时间,这些具体的会在后面讲解。

    process 就是 spawn() 的程序操作句柄了,之后对这个程序的所有操作都是基于这个句柄的,所以它可以说是最重要的部分。

    注意: spawn() ,或者说 pexpect 并不会转译任何特殊字符 比如 | * 字符在Linux的shell中有特殊含义,但是在 pexpect 中不会转译它们,如果在 linux 系统中想使用这些符号的正确含义就必须加上 shell 来运行,这是很容易犯的一个错误。

    正确的方式:

    process = pexpect.spawn('/bin/bash –c "ls –l | grep LOG > log_list.txt"')

    expect() - 关键字匹配

    当 spawn() 启动了一个程序并返回程序控制句柄后,就可以用 expect() 方法来等待指定的关键字了。它最后会返回 0 表示匹配到了所需的关键字,如果后面的匹配关键字是一个列表的话,就会返回一个数字表示匹配到了列表中第几个关键字,从 0 开始计算。

    send() - 发送关键字

    send() 作为3个关键操作之一,用来向程序发送指定的字符串,它的使用没什么特殊的地方,比如:

    process.expect("ftp>")
    process.send("by\n")
    

    这个方法会返回发送字符的数量。

    sendline() - 发送带回车符的字符串

    sendline() 和 send() 唯一的区别就是在发送的字符串后面加上了回车换行符,这也使它们用在了不同的地方:

    • 只需要发送字符就可以的话用send()
    • 如果发送字符后还要回车的话,就用 sendline()

    它也会返回发送的字符数量

    sendcontrol() - 发送控制信号

    sendcontrol() 向子程序发送控制字符,比如 <kbd>ctrl+C</kbd> 或者 <kbd>ctrl+D</kbd> 之类的,比如你要向子程序发送 <kbd>ctrl+G</kbd>,那么就这样写:

    process.sendcontrol('g')
    
    简单实例:
    command = 'ssh '+username+'@'+host
    child = pexpect.spawn(command)
    ret = child.expect([pexpect.TIMEOUT,'Are you sure you want to continue connecting','[P|p]assword']+PROMPT)
    if ret == 0:
        print('[-] Error Connecting')
        return
    if ret == 1:
        child.sendline('yes')
        ret = child.expect([pexpect.TIMEOUT,'[p|P]assword'])
        if ret == 0:
            print('[-] Error Connecting')
            return
        if ret == 1:
            send_command(password)
            return
    if ret == 2:
        send_command(password)
        return
    return child

    注:针对ssh远程登录,pexpect又派生出了pxssh类,在ssh会话操作上再做一层封装

    其常用方法是:

    login()  #建立ssh连接
    logout()  #断开ssh连接
    prompt()  #等待系统提示符,用于等待命令执行结束
    详情请戳:https://blog.csdn.net/zhongbeida_xue/article/details/78679601
    展开全文
  • Pexpect学习

    2016-11-09 17:45:18
    cmd markdon Pexpect 学习

    Pexpect 学习

    ucloud learning


    Pexpect的作用

    Pexpect can be used for automating interactive applications such as ssh, ftp, mencoder, passwd, etc. The Pexpect interface was designed to be easy to use.

    说白了,Pexpect可以进行将输入和输出程序化,从而达到自动化运行交互式应用的目的。

    原理:

    常用API

    import pexpect
    
    response = pexpect.spawn(command) 
    
    child = pexpect.spawn(command) 
    child.expect([regular expression])
    child.send(string)
    child.sendline(string)
    API 参数 说明 返回值
    run run(command) 简单,执行command,返回输出,结束 返回命令的输出
    spawn spawn(command) 交互性更强,启动一个管道,传递command的输入和输出 返回一个子程序
    expect spawn([regular expression]) 等待子程序返回满足正则表达式列表中任意一项的字符串 返回正则表达式列表中匹配到的项的 索引
    send send(string) 向子程序发送一个字符串,效果相当于在终端输入一个文本
    sendline sendline(string) 作用同send,但是会包括一个换行符,所以一般用这个,不用send

    常用属性

    before和after

    expect、send和 sendline 都是和 child 进行交互的 API. child 还有两个属性也很重要: before 和 after。before可以打印出expect匹配项之前child所有的打印,after可以打印出expect匹配到的项。

    the before and after properties will be set to the text printed by child application
    The before property will contain all text up to the expected string pattern. The after string will contain the text that was matched by the expected pattern

    import pexpect
    
    child = pexpect.spawn(command)
    child.expect(regular expression)
    print child.before  # 打印出正则匹配到的字符串之前所有的字符串。
    print child.after   # 打印出正则匹配到的字符串

    timeout

    在expect中可以指定等待返回的超时时间,默认是30s。
    比如我们设置等待child打印出’password:’的时间是120s:

    child.expect('password:', timeout=120)

    例子

    登录到远程主机,执行ping命令,查看返回结果。

     import pexpect
     child=pexpect.spawn('ssh root@106.75.47.195 \'ping -c 1 10.13.46.101\'')
     child.expect('*******')
     child.sendline('ucloud.cn')
     isPingSucceed=child.expect(['100% packet loss', '0% packet loss'])
     print isPingSucceed
     print child.before
     print child.after

    打印结果
    Pexpect Test

    Note:

    1. 匹配一行末尾: 不要使用$或者’\n’,使用”\r\n”
    2. Pexpect更多的API接口说明 http://pexpect.readthedocs.io/en/stable/api/pexpect.html
    展开全文
  • python Pexpect

    2017-03-20 21:04:55
    Pexpect 是一个用来启动子程序...继第一部分《探索 Pexpect,第 1 部分:剖析 Pexpect 》介绍了 Pexpect 的基础和如何使用后,本文将结合具体实例入手,详细介绍 Pexpect 的用法和在实际应用中的注意点。 概述 通
  • pexpect-4.0.1

    2018-06-23 11:56:49
    Pexpect是一个用来启动子程序并对其进行自动控制的Python模块,它可以用来和像ssh,ftp,passwd,telnet等命令行程序进行自动交互。
  • python pexpect

    2016-10-19 23:22:39
    Pexpect 是一个用来启动子程序并对...继第一部分《探索 Pexpect,第 1 部分:剖析 Pexpect 》介绍了 Pexpect 的基础和如何使用后,本文将结合具体实例入手,详细介绍 Pexpect 的用法和在实际应用中的注意点。 概述 通
  • pexpect 学习

    2019-03-26 17:21:30
    #!/usr/bin/python #coding:utf-8 import pexpect import time ...
  • 最近需要远程操作一个服务器并执行该服务器上的一个python脚本,查到可以使用Pexpect这个库。记录一下。 什么是PexpectPexpect能够产生子应用程序,并控制他们,并能够通过期望模式对子应用的输出做出反应。...
  • python之pexpect模块

    千次阅读 2020-03-21 16:51:16
    python之pexpect模块一:pexpect简介二:基本使用流程三:API使用3.1 spawn类3.2 expect()方法3.3 sendline()方法3.4 其他发送信息的方法3.5 其他获取结果的方法四:应用案例五:SSH专用类 一:pexpect简介 以下演示...
  • pexpect 记录

    2018-06-01 09:23:04
    #!/usr/bin/python3#-- coding:utf-8 -- ...child = pexpect.spawn('/usr/bin/ssh root@192.168.10.67') #spawn主要负责启动和控制子应用程序fout = open('mylog.txt','wb')child.logfile = foutchild.expe...
  • 探索 Pexpect,第 1 部分:剖析 Pexpect http://www.ibm.com/developerworks/cn/linux/l-cn-pexpect1/ ...
  • 使用了python中的pexpect模块,在测试代码之前,可输入python进入交互界面,输入help(‘pexpect’),查询是否本地含有pexpect模块。 如果没有,linux系统输入 easy_install pexpect便可自动安装。 测试代码,连接...
  • Python:pexpect模块下载

    2018-08-15 22:43:43
    Python中的pexpect模块下载Python中的pexpect模块下载
  • Pexpect模块使用

    2020-12-29 21:50:44
    1 Pexpect的作用 pexpect 是 Python 语言的类 Expect 实现,Expect 程序主要用于人机对话的模拟,就是那种系统提问,人来回答 yes/no ,或者账号登录输入用户名和密码等等的情况。 Pexpect能够产生子应用程序并控制...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,534
精华内容 1,413
关键字:

pexpect