python中Pexpect的工作流程实例讲解
1、工作流程步骤
(1)用spawn来执行一个程序;
(2)用expect方法来等待指定的关键字,这个关键字是被执行的程序打印到标准输出上面的;
(3)当发现这个关键字以后,使用send/sendline方法发送字符串给这个程序。
2、实例
spawn类
class spawn(SpawnBase): '''This is the main class interface for Pexpect. Use this class to start and control child applications. ''' # This is purely informational now - changing it has no effect use_native_pty_fork = use_native_pty_fork def __init__(self, command, args=[], timeout=30, maxread=2000, searchwindowsize=None, logfile=None, cwd=None, env=None, ignore_sighup=False, echo=True, preexec_fn=None, encoding=None, codec_errors='strict', dimensions=None, use_poll=False):
通过spawn()方法用来执行一个程序,返回程序的操作句柄,后续就可以通过操作句柄来与这个程序进行交互了。
知识点扩展:
Pexpect的基本工作流程,基本可以分为以下三个步骤:
- 首先用spawn来执行一个程序;
- 然后用expect方法来等待指定的关键字,这个关键字是被执行的程序打印到标准输出上面的;
- 最后当发现这个关键字以后,使用send/sendline方法发送字符串给这个程序。
到此这篇关于python中Pexpect的工作流程实例讲解的文章就介绍到这了,更多相关python中Pexpect的工作流程内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
python基于pexpect库自动获取日志信息
1. 前言 对大部分的人来说,解决 Bug 都是依靠关键字去日志去定位问题! 在调试情况下,我们可以实时在控制台查看日志:但对于部署到服务器上的应用,日志都存放在服务器某个目录下,没法通过本地查看到 这种情况下,就需要我们先登录服务器,然后进入到日志目录文件夹,最后通过日志文件去定位问题:如果涉及到 K8s 容器,可能还需要使用 kubectl 命令进入到服务对应的容器中,进入到日志目录,才能开始定位问题,这一切显得非常繁琐且低效 本篇文章介绍一款 Python 依赖库:pexpect,作为一款
-
对Python Pexpect 模块的使用说明详解
背景介绍 Expect 程序主要用于人机对话的模拟,就是那种系统提问,人来回答 yes/no ,或者账号登录输入用户名和密码等等的情况.因为这种情况特别多而且繁琐,所以很多语言都有各种自己的实现.最初的第一个 Expect 是由 TCL 语言实现的,所以后来的 Expect 都大致参考了最初的用法和流程,整体来说大致的流程包括: 运行程序 程序要求人的判断和输入 Expect 通过关键字匹配 根据关键字向程序发送符合的字符串 TCL 语言实现的 Expect 功能非常强大,我曾经用它实现了防火墙
-
python之pexpect实现自动交互的例子
Pexpect 是 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块. Pexpect 的使用范围很广,可以用来实现与 ssh.ftp .telnet 等程序的自动交互:可以用来自动复制软件安装包并在不同机器自动安装:还可以用来实现软件测试中与命令行交互的自动化. 整体来说大致的流程包括: 运行程序 程序要求人的判断和输入 Expect 通过关键字匹配 根据关键字向程序发送符合的字符 基本使用流
-
python pexpect ssh 远程登录服务器的方法
使用了python中的pexpect模块,在测试代码之前,可输入python进入交互界面,输入help('pexpect'),查询是否本地含有pexpect模块. 如果没有,linux系统输入 easy_install pexpect便可自动安装. 测试代码,连接127.0.0.1 下面是我手动连接127.0.0.1, 发现只有在首次使用ssh连接127.0.0.1时,需要输入yes or no ,而后再次使用ssh ,则不需要再次输入yes 直接输入密码即可. 后续测试代码是二次链接,无需查询
-
使用python的pexpect模块,实现远程免密登录的示例
说明 当我们需要用脚本实现,远程登录或者远程操作的时候,都要去解决如何自动输入密码的问题,一般来说有3种实现方式: 1).配置公钥私钥 2).使用shell下的命令,expect 3).使用python的pexpect模块 下面介绍的代码,是使用python的pexpect模块实现的: 代码 import os import sys import pexpect import datetime #获取昨天的日期 date_yes = (datetime.date.today()-datetime
-
Python Pexpect库的简单使用方法
简介 最近需要远程操作一个服务器并执行该服务器上的一个python脚本,查到可以使用Pexpect这个库.记录一下. 什么是Pexpect?Pexpect能够产生子应用程序,并控制他们,并能够通过期望模式对子应用的输出做出反应.Pexpect允许你的脚本产生子应用.控制他们像一个人类在输入命令一样. Pexpect使用在自动交互的应用,例如SSH.SFTP.PASSWD.TELNET.它可以被应用在使用自动设置脚本为不同的服务器自动地重复的安装软件包.也可以被应用在自动的软件测试. Pexpec
-
Python pexpect模块及shell脚本except原理解析
expect脚本 expect是什么 expect是一个免费的编程工具,用来实现自动的交互式任务,而无需人为干预.说白了,expect就是一套用来实现自动交互功能的软件. 在实际工作中,我们运行命令.脚本或程序时,这些命令.脚本或程序都需要从终端输入某些继续运行的指令,而这些输入都需要人为的手工进行.而利用expect,则可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行 由于在linux中的一些命令不太适合于脚本的自动化运行,比如fdisk,telnet,ftp连接下载等,所以
-
python中Pexpect的工作流程实例讲解
1.工作流程步骤 (1)用spawn来执行一个程序: (2)用expect方法来等待指定的关键字,这个关键字是被执行的程序打印到标准输出上面的: (3)当发现这个关键字以后,使用send/sendline方法发送字符串给这个程序. 2.实例 spawn类 class spawn(SpawnBase): '''This is the main class interface for Pexpect. Use this class to start and control child applica
-
基于Python中numpy数组的合并实例讲解
Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np.hstack() - np.vstack() - np.dstack() 其中最泛用的是第一个和第二个.第一个可读性好,比较灵活,但是占内存大.第二个则没有内存占用大的问题. 方法一--append parameters introduction arr 待合并的数组的复制(特别主页是复制,所以要多耗费很多内存) values 用来合并到上述数组
-
python中scipy.stats产生随机数实例讲解
python的numpy 能生成一定概率分布的随机数,但如果需要更具体的概率密度,累积概率,就要使用scipy.stats.scipy.stats用于统计分析,统计工具和随机过程的概率,各个随机过程的随机数生成器可以从numpy.random中找到.本文介绍python中使用scipy.stats产生随机数的原理及实例. 1.scipy.stats正态分步格式 scipy.stats #生成指定分布 scipy.stats.poisson.rvs(loc=期望, scale=标准差, size=
-
python中count函数简单的实例讲解
python中count函数的用法 count()函数 描述:统计字符串里某个字符出现的次数,可以选择字符串索引的起始位置和结束位置. 语法:str.count("char", start,end) 或 str.count("char") 返回值:整型 参数说明: str -- 要统计的字符(可以是单字符,也可以是多字符) star -- 索引字符串的起始位置,默认参数为0 end -- 索引字符串的结束位置,默认参数为字符串长度即len(str) 程序示例: st
-
Python中的二维数组实例(list与numpy.array)
关于python中的二维数组,主要有list和numpy.array两种. 好吧,其实还有matrices,但它必须是2维的,而numpy arrays (ndarrays) 可以是多维的. 我们主要讨论list和numpy.array的区别: 我们可以通过以下的代码看出二者的区别 >>import numpy as np >>a=[[1,2,3],[4,5,6],[7,8,9]] >>a [[1,2,3],[4,5,6],[7,8,9]] >>type(a
-
python爬虫中抓取指数的实例讲解
有一些数据我们是没法直观的查看的,需要通过抓取去获得.听到指数这个词,有的小伙伴们觉得很复杂,似乎只在股票的时候才听说的,比如一些数据的涨跌分析都是比较棘手的问题.不过指数对于我们的数据分析还是很有帮助的,今天小编就python爬虫中抓取指数得方法给大家带来讲解. 刚好这几天需要用到这个爬虫,结果发现baidu指数的请求有点变化,所以就改了改: import requests import sys import time word_url = 'http://index.baidu.com/ap
-
python 调用c语言函数的实例讲解
虽然python是万能的,但是对于某些特殊功能,需要c语言才能完成.这样,就需要用python来调用c的代码了 具体流程: c编写相关函数 ,编译成库 然后在python中加载这些库,指定调用函数. 这些函数可以char ,int, float, 还能返回指针. 以下示例: 通过python调用c函数,返回"hello,world 字符串" 新建c语言文件 hello.c touch hello.c #include <stdio.h> char *get_str() {
-
python队列通信:rabbitMQ的使用(实例讲解)
(一).前言 为什么引入消息队列? 1.程序解耦 2.提升性能 3.降低多业务逻辑复杂度 (二).python操作rabbit mq rabbitmq配置安装基本使用参见上节文章,不再复述. 若想使用python操作rabbitmq,需安装pika模块,直接pip安装: pip install pika 1.最简单的rabbitmq producer端与consumer端对话: producer: #Author :ywq import pika auth=pika.PlainCredentia
-
Python经典五人分鱼实例讲解
A.B.C.D.E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉. 日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份. B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份. . C.D.E依次醒来,也按同样的方法拿鱼. 问他们至少捕了多少条鱼? def main(): fish = 1 while True: total, enough = fish, True for _ in range(5): if (total - 1)
-
基于python select.select模块通信的实例讲解
要理解select.select模块其实主要就是要理解它的参数, 以及其三个返回值. select()方法接收并监控3个通信列表, 第一个是所有的输入的data,就是指外部发过来的数据,第2个是监控和接收所有要发出去的data(outgoing data),第3个监控错误信息在网上一直在找这个select.select的参数解释, 但实在是没有, 哎...自己硬着头皮分析了一下. readable, writable, exceptional = select.select(inputs, ou
随机推荐
- AngularJS中控制器函数的定义与使用方法示例
- js获取元素到文档区域document的(横向、纵向)坐标的两种方法
- ajax详解_动力节点Java学院整理
- SQL分页语句的三种方案
- oracle查看当前日期是第几个星期的方法
- JavaScript 继承机制的实现(待续)
- js小数运算出现多位小数如何解决
- linux Vim基本操作方法
- java读取csv文件内容示例代码
- Python实现telnet服务器的方法
- 详解Android TabHost的多种实现方法 附源码下载
- MySQL Innodb表导致死锁日志情况分析与归纳
- BootStrap的Datepicker控件使用心得分享
- php实现无限级分类
- 用ASP生成UTF-8网页文件的两种方法
- BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
- c#深拷贝文件夹示例
- PowerShell使用正则表达式查找字符串实例
- Lua table的concat方法使用实例
- sql server不存在 sql server拒绝访问第1/3页