Python 远程批量修改密码脚本 #tar -zxvf pexpect-3.0.tar.gz #cd pexpect-3.0 #python setup.py install #! : 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 /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([
Pexpect 模块 两个主要接口 pexpect.run('ls -la') child = pexpect.spawn('scp foo myname@host.example.com:.') ('/bin/bash', ['-c', shell_cmd]) child.expect(pexpect.EOF) #等待断开 将log日志重定向到某个文件或者标准输出 的信息则是 child.logfile_send = sys.stdout try: child.sendline('ls -l') child.expect(pexpect.EOF before代表匹配前的内容,即ls的执行结果,after代表匹配之后的内容 child.before child.buffer try: index = pexpect / http://www.ibm.com/developerworks/cn/linux/l-cn-pexpect2/
另一种安装方法如下: wget http://pexpect.sourceforge.net/pexpect-2.3.tar.gz tar xzf pexpect-2.3.tar.gz cd pexpect /setup.py install pexpect 模块的使用如下: >>> pexpect. pexpect.EOF( pexpect. __path__ pexpect.run( pexpect.ExceptionPexpect( pexpect. __reduce__( pexpect.runu( pexpect.PY3 pexpect. __loader__ pexpect.os pexpect.tty pexpect.
pexpect是一个用来启动子程序并对其进行自动控制的 Python 模块。 pexpect 可以用来和像 ssh、passwd、telnet 、rsync等命令行程序进行自动交互 下面是我用pexpect写的一个脚本,是用来执行远程主机命令,脚本是自动交互输入远程主机的密码的 import pexpect import os,sys import time #远程主机地址 Dir = "/usr/local/tomcat48080/webapps/WebApi_Develop 直接发送yes并继续下一个循环 ssh.sendline('yes') except pexpect.EOF: ssh.close else: ssh.expect(pexpect.EOF) ssh.close() print
1、 安装python的Pexpect模块 wget http://jaist.dl.sourceforge.net/project/pexpect/pexpect/Release%202.3/pexpect -2.3.tar.gz tar xzf pexpect-2.3.tar.gz cd pexpect-2.3 python setup.py install 2、 执行脚本 可以登录到机器执行一些简单的命令等 /usr/bin/env python # -*- coding: utf-8 -*- import pexpect from getpass import getpass passwd = getpass() def ssh_cmd(user,ip, cmd): ssh = pexpect.spawn('ssh %s@%s "%s"' % (user,ip,cmd : print "EOF" except pexpect.TIMEOUT: print "TIMEOUT"
image.png image.png
如果没有安装easy_install,那么wget -q http://peak.telecommunity.com/dist/ez_setup.py 获取一下 python ez_setup.py pexpect 是python一个模块,可以通过:easy_install pexpect 来安装。 这里主要是用pexpect执行ssh,查看远程uptime和df -h看硬盘状况。 #ssh_cmd.py #coding:utf-8 import pexpect def ssh_cmd(ip, user, passwd, cmd): ssh = pexpect.spawn('ssh if i == 0 : ssh.sendline(passwd) elif i == 1: ssh.sendline('yes') except pexpect.EOF: ssh.close() else
下载并安装pexpect与ptyprocess模块并结合python2.7实现如下操作 tar -zxvf pexpect-4.0.1.tar.gz cd pexpect-4.0.1 python setup.py /usr/bin/env python # -*- coding: utf-8 -*- import pexpect #from getpass import getpass #passwd = getpass() def ssh_cmd(user,ip, cmd,passwd): ssh = pexpect.spawn('ssh %s@%s "%s"' % (user,ip, ssh.expect('password: ') ssh.sendline(passwd) except pexpect.EOF : print "EOF" except pexpect.TIMEOUT: print "TIMEOUT"
/usr/local/python3/bin/python3 import pexpect def exec_command(user,host,password): new_connection = 'Are you sure you want to continue connecting' conn = 'ssh '+user+'@'+host child = pexpect.spawn(conn ) #启动ssh命令 index = child.expect([pexpect.TIMEOUT,new_connection,'password:']) #等待程序输出,匹配字符串进行后续操作 if 1: #匹配到Are you sure you want to continue connecting child.sendline('yes') index = child.expect([pexpect.TIMEOUT
Pexpect 是 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块。 Pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互;可以用来自动复制软件安装包并在不同机器自动安装;还可以用来实现软件测试中与命令行交互的自动化。 整体来说大致的流程包括: 运行程序 程序要求人的判断和输入 Expect 通过关键字匹配 根据关键字向程序发送符合的字符 基本使用流程 pexpect 的使用说来说去,就是围绕3个关键命令做操作: 首先用 掌握这个概念之后 pexpect 的使用就很容易了。 注意: spawn() ,或者说 pexpect 并不会转译任何特殊字符 比如 | * 字符在Linux的shell中有特殊含义,但是在 pexpect 中不会转译它们,如果在 linux 系统中想使用这些符号的正确含义就必须加上
Pexpect是一个纯Python模块,用于生成子应用程序;控制他们;并对输出中的预期模式作出响应。Pexpect的工作原理类似于Don Libes的Expect。 Pexpect允许脚本生成一个子应用程序,并像键入命令一样控制它。Pexpect可用于自动化交互应用程序,如ssh、ftp、passwd、telnet等。 pexpect与SSH交互 #coding=utf-8 import pexpect from threading import * def SSHConnect(Host,User,Password (connStr,timeout=1) # 期望有ssh_newkey字符、提示输入密码的字符出现,否则超时 ret = child.expect([pexpect.TIMEOUT 登录执行命令 #-*- coding:UTF-8 -*- import pexpect def ssh(user,host,password,port,command): child = pexpect.spawn
文章以word形式发至邮箱: minwei.wang@dbappsecurity.com.cn 有偿投稿,记得留下你的姓名和联系方式哦~ 先来介绍一下pexpect,pexpect可以理解为 Pexpect的安装 可以使用pip安装 pip install pexpect 也可以使用easy_install easy_install pexpect 本菜鸡在win7下使用pip安装的时候抛出好多异常 下载地址: https://pypi.python.org/pypi/pexpect/ 适用于py2和py3 下载完成之后找到对应路径直接使用pip安装即可 后来遇到个坑,发现windows下不支持pexpect ,只好改换linux 一个简单的ftp登录脚本 #coding:utf-8 import pexpect ftp = pexpect.spawn('ftp 192.168.112.129') #spawn pexpect.run('ssh xxx@x.x.x.x',events={'password:':'xxx'}) events是个字典 3. pxssh类 pxssh是pexpect的派生类,常用的方法有
使用 pexpect 模块可以在 Python 中执行命令并检查其输出。你可以使用 ssh 命令连接到远程服务器,并执行 ls 命令检查文件是否存在。 用户已经使用 pexpect 库编写了大部分代码,但需要捕获文件存在与否的值,以便断言文件是否存在。 方案 3:使用 pexpect 库在 pexpect 库的 expect() 方法中,使用 \r\n 换行符来确保命令执行的一致性。 else: print("File does not exist.")方案 3 的代码示例:import pexpectdef check_file_exists(host, username , password, file_path): ssh = pexpect.spawn('ssh %s@%s' % (username, host)) ssh.expect('password
什么是Pexpect? Pexpect是一个Python库,用于自动化与命令行交互的任务。它能轻松处理像SSH、FTP、密码sudo命令、数据库查询等任务。 下面是一个简单的使用示例: import pexpect child = pexpect.spawn('ssh username@domain.com') child.expect('Password 其API与Pexpect非常相似,因此如果你已经熟悉Pexpect,使用WinPexpect将会非常简单。 示例 child = pexpect.spawn('pscp file.txt username@domain:/path') # ...其余代码 数据库操作 # Pexpect示例 child = pexpect.spawn('mysql -u username -p') # ...其余代码 # WinPexpect示例 child = pexpect.spawn('mysql.exe -u
Pexpect 是一个自动控制的 Python 模块,可以用来ssh、ftp、passwd、telnet 等命令行进行自动交互。 官方网站是 http://www.noah.org/。 如果你对expect还不太了解,那么可以参考Linux expect 介绍与用法 一、pexpect 安装方式 以root用户依次执行如下命令: wget http://pexpect.sourceforge.net /pexpect-2.3.tar.gz tar xzf pexpect-2.3.tar.gz cd pexpect-2.3 sudo python . /setup.py install 二、简单测试 编写一个简单的脚本pexpect_test.py测试一下 #! : forever ''' import pexpect if __name__ == '__main__': user = 'http://www.pythonclub.org'
expect的精神比较伟大,也被各种其他语言所模仿和支持,比如python里面的pexpect等: ? pexcept(https://github.com/pexpect/pexpect)号称自己: ? Pexpect is in the spirit of Don Libes' Expect, but Pexpect is pure Python. 上述ssh同样的功能,如果换支持pexpect的python执行,代码如下: ? expect:pip install pexpect expect语言:apt install expectpython expect:pip install pexpect
使用模块介绍 pexpect 就这一个就完了! 简单介绍一下这个模块: pexpect 是 expect 的一个 python 实现,用来进行人机交互,比如执行某一段程序时要求输入用户名和密码,或者是 yes/no 这种情况时,使用 pexpect pexpect 的使用范围很广,可以用来实现与 ssh、ftp 、telnet 等程序的自动交互 1.1 使用方式 pexpect 的使用基本上分为三个步骤: 首先用 spawn 来执行一条命令或者一段程序 ('/usr/bin/ftp') child = pexpect.spawn('/usr/bin/ssh user@example.com') child = pexpect.spawn('ls -latr LOG > logs.txt' child = pexpect.spawn('/bin/bash', ['-c', shell_cmd]) child.expect(pexpect.EOF) args
password'; echo 'password') | pure-pw useradd www -u www-data -d /home/ftpuser/www 方法二:Python脚本 在此我们使用了Pexpect 模块,我们可以使用pip install pexpect安装。 /usr/local/bin/python import pexpect child = pexpect.spawn('pure-pw useradd www -u www-data -d /home child.sendline('password'); child.expect('Enter it again: '); child.sendline('password'); child.expect(pexpect.EOF
/usr/bin/env python # -*- coding: utf-8 -*- import pexpect import time import traceback def doRsync dstDir}".format(rUser = user,rHost=ip,srcDir=srcDir,dstDir=dstDir) try: ssh = pexpect.spawn ,pexpect.EOF]) ssh.close() except : print traceback.format_exc 的对象child调用read()时触发TIMEOUT异常 ssh远程操作 read() 需要程序回话结束并且返回EOF才能读取剩下的所有内容 详细可见 pexpect模块参数解释 参考链接:https: //blog.51cto.com/749807/1566258 pexpect模块参数解释 https://www.jianshu.com/p/cfd163200d12
/usr/bin/evn python import re,sys,os,pexpect from pexpect import * #coding=utf-8 #create environment /demoCA/index.txt') #create root ca child0=pexpect.spawn('openssl req -new -x509 -keyout ca0.key -out Create key file cmd2='openssl genrsa -des3 -out '+a+str(i)+'.key' + ' 2048' child2=pexpect.spawn req -new -key '+ a+str(i)+'.key' + ' -out '+a+str(i)+'.csr' +' -config openssl.cnf' child3=pexpect.spawn -cert '+ a+str(i-1)+'.crt' +' -keyfile ' + a+str(i-1)+'.key'+ ' -config openssl.cnf' child4=pexpect.spawn