欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

pythonpexpec(linux专用),ssh连接

时间:2023-05-24

Expect 程序主要用于人机对话的模拟,就是那种系统提问,人来回答 yes/no ,或者账号登录输入用户名和密码等等的情况。因为这种情况特别多而且繁琐,所以很多语言都有各种自己的实现。最初的第一个 Expect 是由 TCL 语言实现的,所以后来的 Expect 都大致参考了最初的用法和流程,整体来说大致的流程包括:

运行程序
程序要求人的判断和输入
Expect 通过关键字匹配
根据关键字向程序发送符合的字符串
TCL 语言实现的 Expect 功能非常强大,我曾经用它实现了防火墙设备的完整测试平台。也因为它使用方便、范围广,几乎所有脚本语言都实现了各种各样的类似与Expect的功能,它们叫法虽然不同,但原理都相差不大

pexpect 是 Python 语言的类 Expect 实现。

spawn() 方法用来执行一个程序,它返回这个程序的操作句柄,以后可以通过操作这个句柄来对这个程序进行操作。

from time import sleepimport pexpectimport sysfrom pexpect.popen_spawn import PopenSpawnchild = pexpect.popen_spawn.PopenSpawn('ssh root@xxx.xxx.xxx.xxx')# a = child.expect(':')# print(a)logFileId = open("logfile.txt", 'wb')child.logfile = logFileIdchild.expect('password')# print(password)child.sendline('password')child.expect('root')child.sendline('ls /')child.expect('root')child.sendline('exit')index = child.expect(pexpect.EOF)if index==1: child.sendline("exit") child.expect(pexpect.EOF)print('this ip has exists in know_host files!')

pxssh类:为建立SSH连接定制了一些功能

# 远程登录主机执行命令from pexpect.pxssh import pxsshhostname = '172.17.2.117'user = 'ginvip'password = 'ginvip's = pxssh()s.login(hostname, user, password)s.sendline('ip addr')s.prompt()# 匹配命令提示符print(s.before)# 查看命令执行结果s.logout()

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。