发布时间:2019-08-24 09:33:48编辑:auto阅读(1357)
Python 远程批量修改密码脚本 #tar -zxvf pexpect-3.0.tar.gz #cd pexpect-3.0 #python setup.py install #!/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[-1] ##获取一个IP iplist.pop() ##列表去掉一个值 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+' <the end>' (1)spawn类 class pexpect.spawn(command,args=[],timeout=30,maxread=2000,searchwidowsize=None ,logfile=None,cwd=None,env=None,ignore_sighup=True) (2)run函数 pexpect.run(command,timeout=-1,withexitstatus=False,events=None,extra_args=None, logfile=None,cwd=None,env=None). (3)pxssh类 class pexpect.pxssh.pxssh(timeout=30,maxread=2000,searchwidowsize=None,logfile=None, cwd=None,env=None) pxssh常用的三个方法: login()建立连接; logout()断开连接; prompt()等待系统提示符,用于等待命令执行结束
#!/usr/bin/python# encoding=utf-8# Filename: pexpect_test.pyimport pexpectdef sshCmd(ip, passwd, cmd): ret = -1 ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd)) try: i = ssh.expect(['password:', 'continue connecting(yes/no)?'], timeout=5) if i == 0: ssh.sendline(passwd) elif i == 1: ssh.sendline('yes\n') ssh.expect('password:') ssh.sendline(passwd) ssh.sendline(cmd) r = ssh.read() print r ret = 0 except pexpect.EOF: print "EOF" ret = -1 except pexpect.TIMEOUT: print "TIMEOUT" ret = -2 finally: ssh.close() return ret sshCmd('xxx.xxx.xxx.xxx','xxxxxx','ls /root')
上一篇: python with..as
下一篇: python安装
46482
44374
35824
33379
28077
24641
23567
18781
18039
16726
4548°
5104°
4635°
4777°
5439°
4401°
4454°
5002°
4893°
6142°