python运维脚本交换机更改密码_Python 远程批量修改密码脚本

(一)注:pexpect模块需安装#!/usr/bin/env python

#coding:utf8

import pexpect

import sys

iplist = ['192.168.140.142','192.168.140.145'] ##定义主机列表

oldpasswd = '234567' ##旧密码

newpasswd = '1234567' ##新密码

while iplist:

ip = iplist.pop() ## 获取一个ip

child = pexpect.spawn('ssh root@'+ip) ##定义触发

fout = file('passlog.txt','a') ##定义日志文件,

child.logfile = fout

try:

while True:

index = child.expect(['(yes/no)','(?i)password:'])

if index == 0:

child.sendline('yes')

elif index == 1:

child.sendline(oldpasswd)

child.expect('#')

child.sendline('echo '+newpasswd+' | passwd --stdin root')

child.expect('#')

child.sendline('exit')

except pexpect.TIMEOUT:

print >>sys.stderr, ip+' timeout'

except pexpect.EOF:

print >>sys.stderr, ip+' '

(二)pexpect的安装:#tar -zxvf pexpect-3.0.tar.gz

#cd pexpect-3.0

#python setup.py install

(三)pexpect的简单介绍:

1、pexpect有几个核心组件包括spawn类、run函数、及派生类pxssh等的定义及使用方法。

(1)spawn类

spawn是pexpect的主要类接口,功能是启动和控制子应用程序,以下是它的构造函数定义:

class pexpect.spawn(command,args=[],timeout=30,maxread=2000,searchwidowsize=None

,logfile=None,cwd=None,env=None,ignore_sighup=True)

其中command参数可以是任意已知的系统命令,如:

command = pexpect.spawn('ls /tmp')

timeout为等待结果的超时时间;maxread为pexpect从终端控制台一次读取的最大字节数,searchwidowsize为匹配缓冲区字符串的位置,默认是从开始位置匹配。

(2)run函数

run是使用pexpect进行封装的调用外部命令的函数,类似于os.system或os.popen方法,不同的是

run()可以同时获得命令的输出结果及命令的退出状态,函数定义:

pexpect.run(command,timeout=-1,withexitstatus=False,events=None,extra_args=None,

logfile=None,cwd=None,env=None).

command为任意系统命令,events是一个字典,定义了expect及sendline方法的对应关系,

spawn方式的例子如下:

from pexpect import *

run('scp file user@example.com: .',events={'(?i)password':mypasswd})

(3)pxssh类

pxssh是pexpect的派生类,定义如下:

class pexpect.pxssh.pxssh(timeout=30,maxread=2000,searchwidowsize=None,logfile=None,

cwd=None,env=None)

pxssh常用的三个方法:

login()建立连接;

logout()断开连接;

prompt()等待系统提示符,用于等待命令执行结束。

----------------------------------------------------------------Pexpect介绍摘自于《Python自动化运维》

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值