1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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()等待系统提示符,用于等待命令执行结束

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/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:
        = ssh.expect(['password:''continue connecting(yes/no)?'], timeout=5)        if == 0:
            ssh.sendline(passwd)        elif == 1:
            ssh.sendline('yes\n')
            ssh.expect('password:')
            ssh.sendline(passwd)
        ssh.sendline(cmd)
        = 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')

本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1827747,如需转载请自行联系原作者

python pexpect相关推荐

  1. python pexpect pxssh scp_python Pexpect 实现输密码 scp 拷贝的方法

    在服务器A上的程序用到服务器B上的文件data,并且需要定期更新文件. 但是直接在bash文件中使用 scp -P 1000 192.168.199.10:/temp/data /temp 由于权限限 ...

  2. Python Pexpect库的简单使用

    Python Pexpect库的使用 简介 最近需要远程操作一个服务器并执行该服务器上的一个python脚本,查到可以使用Pexpect这个库.记录一下. 什么是Pexpect?Pexpect能够产生 ...

  3. python pexpect使用介绍

    pexpect 是 expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块. pexpect 的使用范围 ...

  4. linux python pexpect,Linux pexpect非root用户安装

    来由 想来想去要用pexpect来取代bash脚本作ssh自动登录,然后就去准备安装pexpect包了 走过的路 前提: 1.主机无法使用root用户 2.主机处于离线状态 3.主机python版本2 ...

  5. python pexpect模块详解_python Pexpect模块如何使用 python Pexpect模块使用代码示例

    python Pexpect模块如何使用?本篇文章小编给大家分享一下python Pexpect模块使用代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以 ...

  6. Python pexpect模块的使用及示例代码

    简介: Pexpect 是 Expect 语言的一个 Python 实现,用于生成子应用程序并自动控制它们,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块.本文主要 ...

  7. python pexpect.before与after_python Pexpect模块的使用

    Pexpect简介 在讲解Pexpect之前,我们需要先了解一下Expect这个脚本语言,它是由TCL语言实现的,主要用于人机交互式对话的自动化控制,可以用来完成ssh.ftp.telnet等命令行程 ...

  8. python pexpect telnet_使用python的pexpect模块,实现远程免密登录的示例

    说明 当我们需要用脚本实现,远程登录或者远程操作的时候,都要去解决如何自动输入密码的问题,一般来说有3种实现方式: 1).配置公钥私钥 2).使用shell下的命令,expect 3).使用pytho ...

  9. python pexpect模块详解_python pexpect模块

    Pexpect模块简介: Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 ...

最新文章

  1. Zend framework重定向的方法
  2. 算法习题---线性表之单链表逆序打印
  3. STM32 基础系列教程 10 - 单线串口(半双工)
  4. 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.4. 重点回顾)
  5. 纯CSS实现提示框小三角
  6. nssl1167-桐人的约会【最短路】
  7. oracle 临时表空间的增删改查
  8. 用ABC三个字母简洁归纳2018年物联网趋势
  9. pypdf2 存储pdf_PyPDF2:用于PDF文件操作的Python库
  10. [杂谈]逗比的语录?
  11. Waves13混音效果全套插件
  12. 谁会成为印度版微信?
  13. Hadoop 2.X的安装与配置
  14. python实现快速欧式聚类FEC:fast-euclidean-clustering
  15. 你的孤独,虽败犹荣 很喜欢的句子
  16. Express获取请求参数
  17. 第十周博文作业,项目2 (1)(2)
  18. IT工程师 毕业4年我年薪涨到30万
  19. android图案解锁功能的实现
  20. Cell插件在Web开发中的应用

热门文章

  1. [转]c# 泛类型(泛型) 以及强类型与弱类型的 理解及优化
  2. [导入]如何理解Return的返回值?
  3. python数据结构与算法:队列与双端队列
  4. pkg-config工具在实际工程中的用法
  5. 虚拟机安装CentOS以及SecureCRT设置【完美无错版】
  6. PHP自动加载类—__autoload()和spl_autoload_register()
  7. 织梦内容管理系统修改
  8. 函数指针--Nginx和Redis中两种回调函数写法
  9. 使用cat /proc/进程id/maps 查看进程内存映射
  10. 使用Python3发送邮件测试代码