python pexpect
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 :
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' )
|
本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1827747,如需转载请自行联系原作者
python pexpect相关推荐
- python pexpect pxssh scp_python Pexpect 实现输密码 scp 拷贝的方法
在服务器A上的程序用到服务器B上的文件data,并且需要定期更新文件. 但是直接在bash文件中使用 scp -P 1000 192.168.199.10:/temp/data /temp 由于权限限 ...
- Python Pexpect库的简单使用
Python Pexpect库的使用 简介 最近需要远程操作一个服务器并执行该服务器上的一个python脚本,查到可以使用Pexpect这个库.记录一下. 什么是Pexpect?Pexpect能够产生 ...
- python pexpect使用介绍
pexpect 是 expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块. pexpect 的使用范围 ...
- linux python pexpect,Linux pexpect非root用户安装
来由 想来想去要用pexpect来取代bash脚本作ssh自动登录,然后就去准备安装pexpect包了 走过的路 前提: 1.主机无法使用root用户 2.主机处于离线状态 3.主机python版本2 ...
- python pexpect模块详解_python Pexpect模块如何使用 python Pexpect模块使用代码示例
python Pexpect模块如何使用?本篇文章小编给大家分享一下python Pexpect模块使用代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以 ...
- Python pexpect模块的使用及示例代码
简介: Pexpect 是 Expect 语言的一个 Python 实现,用于生成子应用程序并自动控制它们,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块.本文主要 ...
- python pexpect.before与after_python Pexpect模块的使用
Pexpect简介 在讲解Pexpect之前,我们需要先了解一下Expect这个脚本语言,它是由TCL语言实现的,主要用于人机交互式对话的自动化控制,可以用来完成ssh.ftp.telnet等命令行程 ...
- python pexpect telnet_使用python的pexpect模块,实现远程免密登录的示例
说明 当我们需要用脚本实现,远程登录或者远程操作的时候,都要去解决如何自动输入密码的问题,一般来说有3种实现方式: 1).配置公钥私钥 2).使用shell下的命令,expect 3).使用pytho ...
- python pexpect模块详解_python pexpect模块
Pexpect模块简介: Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 ...
最新文章
- Zend framework重定向的方法
- 算法习题---线性表之单链表逆序打印
- STM32 基础系列教程 10 - 单线串口(半双工)
- 鸟哥的Linux私房菜(基础篇)-第一章、Linux是什么(一.4. 重点回顾)
- 纯CSS实现提示框小三角
- nssl1167-桐人的约会【最短路】
- oracle 临时表空间的增删改查
- 用ABC三个字母简洁归纳2018年物联网趋势
- pypdf2 存储pdf_PyPDF2:用于PDF文件操作的Python库
- [杂谈]逗比的语录?
- Waves13混音效果全套插件
- 谁会成为印度版微信?
- Hadoop 2.X的安装与配置
- python实现快速欧式聚类FEC:fast-euclidean-clustering
- 你的孤独,虽败犹荣 很喜欢的句子
- Express获取请求参数
- 第十周博文作业,项目2 (1)(2)
- IT工程师 毕业4年我年薪涨到30万
- android图案解锁功能的实现
- Cell插件在Web开发中的应用
热门文章
- [转]c# 泛类型(泛型) 以及强类型与弱类型的 理解及优化
- [导入]如何理解Return的返回值?
- python数据结构与算法:队列与双端队列
- pkg-config工具在实际工程中的用法
- 虚拟机安装CentOS以及SecureCRT设置【完美无错版】
- PHP自动加载类—__autoload()和spl_autoload_register()
- 织梦内容管理系统修改
- 函数指针--Nginx和Redis中两种回调函数写法
- 使用cat /proc/进程id/maps 查看进程内存映射
- 使用Python3发送邮件测试代码