Python中的Pexpect模块的简单使用
2023-09-11 14:14:04 时间
Pexpect 是一个用来启动子程序并对其进行自动控制的 Python 模块。 Pexpect 可以用来和像 ssh、ftp、passwd、telnet 等命令行程序进行自动交互。以下所有代码都是在Kali Linux环境下,python 2.7.13
Pexpect中的 pexpect.spawn() 和 pexpect.run() 依赖于Python标准库中的 pty 模块,而pty模块只在POSIX系统中存在,所以在Windows系统上的功能有限。
Pexpect模块首先通过生成子应用以代理交互应用,这样就可以通过检测子应用的模式匹配情况以响应交互应用的输出。
对于以下代码:
connect()函数接收的参数包括一个用户名、主机名和密码,返回SSH的连接结果。利用Pexpect库,程序会等待一个可预计到的输出。如:超时、公钥信息改变或要求输入密码。如果出现超时,session.expect()返回零,打印一个错误消息后返回。如果child.expect()方法捕获了ssh_newkey的消息,它会返回数字1,使函数发送 yes 消息以接收新秘钥,之后等待密码提示符发送SSH密码。一旦通过验证,我们就可以使用一个单独的command()函数在SSH会话中发送命令。command()函数需要接收的参数是一个SSH会话和命令字符串,然后,它向会话发送命令字符串,并等待命令提示符再次出现,在获得命令提示符后,该函数把从SSH会话处得到的结果打印出来
import pexpect
PROMPT=['#','>>>','>','\$']
def send_command(child,cmd): #传递命令
child.sendline(cmd)
child.expect(PROMPT) #期望获得的命令提示符
print child.before ##打印从SSH会话得到的结果
def connect(user,host,password):
ssh_newkey="Are you sure you want to continue connecting"
connStr='ssh '+user+'@'+host
child=pexpect.spawn(connStr) #实例化连接
ret=child.expect([pexpect.TIMEOUT,ssh_newkey,'[P|p]assword:']) ##捕获 ssh_newkey
if ret==0: #判断捕获的信息
print '[-] Error Connecting'
return
if ret==1: #捕获了ssh_newkey的消息
child.sendline('yes') #发送yes
ret=child.expect([pexpect.TIMEOUT,ssh_newkey,'[P|p]assword:'])
if ret==0:
print '[-] Error Connecting'
return
child.sendline(password)
child.expect(PROMPT) #捕获命令提示符
return child
def main():
host="192.168.10.10"
user="root"
password="toor"
child=connect(user,host,password)
send_command(child,'ls /root/')
if __name__=='__main__':
main()
相关文章:Python脚本暴力破解SSH口令
相关文章
- python 模块 chardet下载方法及介绍
- Python中Matplotlib模块的简单使用
- Python中Matplotlib模块的简单使用
- Python中的时间日期模块(time、datetime)
- Python中的BeautifulSoup模块
- python 封装logging日志模块,与selenium连用
- python执行脚本加参数_命令行运行Python脚本时传入参数的三种方式详解以及argparse子命令subparsers()方法
- Python自动化测试 软件测试最全教程(附笔记),看完可就业
- Python中pickle模块用法详解
- 请问如何从小白到大牛的?求一份Python学习路线【干货】
- python模块——hashlib模块(简单文件摘要算法实现)
- 详解Python-Numpy库的函数diagonal()【并附函数diagonal()与函数diag()的区别】
- python 模块 moviepy 视频剪辑
- python IPy模块详解
- python 自动化数据提取之正则表达式
- python通过mysql.connector操作mysql数据库
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- 《Python Cookbook(第3版)中文版》——1.2 从任意长度的可迭代对象中分解元素
- 《Python Cookbook(第3版)中文版》——6.11 读写二进制结构的数组
- Python 标准库之 Json 模块
- python值inspect模块的简单使用
- 为Python编写一个简单的C语言扩展模块
- 用Numba:一行代码将Python程序运行速度提升100倍
- Python学习--Selenium模块学习(2)
- 华为OD机试 - 分苹果(Python)
- Python自学daily—模块/list/tuple/dict
- Fabric-Python知名批量自动化部署/测试模块
- Python opencv-python 简单测试