系统批量运维管理工具pexpect

1、介绍pexpect

通过pexpect我们可以实现对ssh,ftp,passwd,telnet等命令进行自动交互,不需要人工干预达到自动目的。

2、pexpect的组件介绍

2.1、spawn类

作用:启动和控制子应用程序,其构造函数如下:

class pexpect.spawn(command,args=[],timeout=30,maxread=2000,searchwindowsize=None,logfile=None,cwd=None,env=None,ignore_sighup=True)

其中command是任意已知的系统命令,timeout是等待结果的超时时间,maxread是从终端一次读取的最大字节数,searchwindowsize是匹配缓冲区字符串的位置。

注意点:pexpect不会解析shell命令中的元字符(重定向>,管道|,通配符*),不过将存在这三个特殊元字符的命令作为/bin/bash的参数进行调用,可以解决这个问题。比如:

child=pexpect.spawn(‘/bin/bash -c "ls -l | grep LOG > logs.txt"‘)

child.expect(pexpect.EOF)

将命令的参数以Python列表形式替换:

shell_cmd = ‘ls -l | grep LOG >logs.txt‘

child=pexpect.spawn(‘/bin/bash‘,[‘-c‘,shell_cmd])

child.expect(pexpect.EOF)

调试代码是,pexpect提供两种方式可以查看输入输出:1>写入到日志 2>输出到stdout

child=pexpect.spawn(‘some_cmd‘)

fout=file(‘mylog.txt‘,‘w‘)

child.logfile = fout

或者:child.logfile=sys.stdout

其中expect方法定义了一个子程序输出的匹配规则:

定义的方法是expect(pattern,timeout=-1,searchwindowsize=-1)

pattern表示字符串、pexpect.EOF(指向缓冲区尾部)、pexpect.TIMEOUT、正则表达式。

send向子程序发送相应命令,相当于标准输入键盘

send(self,s)发送命令,不回车

sendline(self,s=‘‘)发送命令,回车

sendcontrol(self,char)发送控制字符,如child.sendcontrol(‘c‘)相当于ctrl+c

sendeof()发送eof

2.2>run函数

run是使用pexpect进行封装的外部命令的函数

run(command,timeout=-1,withexitstatus=False,events=None,extra_args=None,logfile=None,cwd=None,env=None)

import pexpect

pexpect.run(‘scp filename [email protected]:~‘,events={‘(?)password‘:mypassword})

3、pxssh

pxssh针对ssh会话操作做了一层封装,提供了更加直接的操作方式

pxssh常用方法:login()建立ssh链接,logout()断开连接,prompt()等待系统提示符,用户等待命令执行完毕。

时间: 2024-10-01 12:41:34

系统批量运维管理工具pexpect的相关文章

系统集中运维管理平台【社区版】安装与配置方法

最近很多博友反应不知道怎么安装与配置"系统集中运维管理平台[社区版]"程序,下面我写一个详细的配置文档,希望能够帮助各位博友: 程序支持操作系统平台: 主程序支持: Win7.Win8.Win8.1.Win2008.Win2008R2.Win2012.Win2012R2 MYSQL数据库: 软件版本:mysql_installer_community_V5.6.21.1_setup.1418020972 数据库可以安装在Windows或Linux平台,根据个人需求,这里以Windows

SUSE Linux 11编译安装Ansible自动化运维管理工具

ANSIBLE Ansible是一个使用Python语言开发的Linux平台下的自动化运维管理工具,它支持远程管理绝大多数Linux或Windows主机.Ansible默认通过SSH协议管理机器,即只需要在管理主机上安装Ansible就可以远程管理Linux主机,被托管节点主机不需要安装.对于Windows机器则是通过与Windows的Winrm Service服务(PowerShell3.0需要以上的版本)进行远程管理. Ansible需要Python2.6或Python2.7以上(包括3.0

fengyun.rui大牛写的基于flask的python系统运维管理工具:happyshell

项目地址:https://github.com/rfyiamcool/happyshell/ 大牛博文:http://rfyiamcool.blog.51cto.com/1030776/1122445 源码写满"卧槽", 大牛当真性情中人,还望注意下的好. ========= 如果你是来找个趁手的python系统运维管理工具的话,那么,这不是你要的. 芮大牛写的这东西,单放giuthub上的源码,想完整跑起来可不容易,报错哗哗的. 所以,在我使用之后,我特地写篇博客来鄙视一下. 首先g

CheungSSH 史上最牛的比Ansible更好用的自动化运维管理工具

CheungSSH自动化运维管理工具 说明:CheungSSH自动化运维管理工具是由[张其川 Cheung Kei-Chuen]开发的易于部署安装,操作简单.功能实用.无需安装任何插件.提供技术支持.授权免费使用的一款运维利器. 一.下载安装CheungSSH 特别提示:    CheungSSH由于是批量的管理操作, 所以暂时不支持交互式,比如vi,top,ping等等:当然,如果懂得如何取消交互,那么也是可以的. 使用平台介绍: CheungSSH只适用于Linux系统和Unix系统,因为是

系统批量运维管理器pexpect的使用

# pip install pexpect 或 # easy_install pexpect 1 #!/usr/bin/env python 2 import pexpect 3 child = pexpect.spawn('/usr/bin/scp /root/pexpect/haha 172.16.65.201:/tmp/') 4 child.expect('password:') 5 child.sendline('rootroot') 6 child.expect(pexpect.EOF

教你如何用好这些IT运维管理必备工具

能熟练使用下面的两三个IT运维管理工具,你就是高手中的高手. 统一帐号管理 你还在自己写脚本批量增加机器的用户名.分组和修改密码或者同步主机的/etc/passwd吗?你还在使用脚本批量对用户设置权限吗?如果有一台帐号主机能够提供所有服务器的帐号.密码.权限控制,如此一来,如果想要增加.修改.刪除用户,只要到这台服务器上面处理即可,这样是不是很方便? 1. LDAP 统一管理各种平台帐号和密码,包括但不限于各种操作系统(Windows.Linux),Linux系统sudo集成,系统用户分组,主机

平安城市运维管理软件架构

1. 平安城市运维管理挑战   平安城市是一个由各式软硬件组成的复杂网络系统,视频业务是其核心业务.在平安城市网络中部署着众多视频图像信息采集.传输.处理设备和应用软件系统.这些设备与应用软件系统在满足治安管理.城市管理.交通管理.应急指挥等多样化需求的同时,也对运维管理提出了新的要求与挑战.  平安城市的运维管理所面对的挑战如图1所示.  针对平安城市的运维管理挑战,平安城市运维管理系统(以下简称运维管理系统)的功能和范围定义如图2所示.  不同于电信网络.计算机网络的运维管理系统,平安城市的

运维管理平台实现与学习心得

经过一段时间的学习,写了一个简单的运维管理平台小项目,先看看啥样吧! 下面说明下具体实现: 软件架构:HTML+CSS+Jquery+Bootstrap+Ajax+Python2.7+Django1.9+SaltStack+MySQL 功能描述: 数据可视化:采用百度开源的ECharts绘图,通过Python脚本每分钟统计Nginx日志分析PV/UV量写到数据库. 资产管理:采用SaltStack Restful API二次封装调用收集主机配置信息入库,并提供增删改查. 主机批量管理:也是调用S

云运维管理服务引领企业IT运维新理念

IT监控与运维管理是用户保障业务系统正常稳定运行的必要手段,是用户业务系统的支撑工具.随着IT建设的不断深入和完善,计算机硬软件系统的运行维护已经成为了各行各业各单位领导和信息服务部门普遍关注和不堪重负的问题. 本人在IT监控与运维服务管理领域耕耘十五年,从ITIL服务体系到SLA服务等级协议等理念的引入见证了IT运维管理服务领域的成长历程.IT运维管理发展到现今的水平还是存在着诸多的矛盾与问题,伴着IT在企业中的作用日益明显,IT建设和IT运维同时成为了企业效率的加速器.基础架构平台和软件系统