模块:pexpect
简介:可以实现命令行内自动捕捉关键字,自动输入内容并执行
#实现交互pexpect模块
#先要安装软件包pexpect
#-*-coding:utf-8 -*-
#实现远程登录
def ssh():
import pexpect,sys
child = pexpect.spawn("/usr/bin/sh -c 'ssh -p 22 root@192.168.3.2'") #定义一个对象
child.expect("yes/no") #捕捉该对象出现的关键词
logfile = open('log.txt','wb') #生成一个日志文件
child.logfile = logfile #将输出内容保存到logfile对象文件
index = child.expect(['yes/no','password']) #定义多个输出
if index == 0: #如果输出为“'yes/no'”时执行如下语句
child.sendline("yes") #如果捕捉到的话输入“yes”
child.expect("password:") #捕捉是否有关键词“password:”
child.sendline("jia1314") #捕捉到后输入
elif index == 1: #如果输出为“'password'”时执行如下语句
child.sendline("jia1314")
child.expect("#") #捕捉终端提示符“#”
child.sendline("who")
child.expect("#")
logfile.close()
#ssh()
#实现长时间连接操作
def long_ssh():
import pexpect.pxssh
import getpass
try:
s = pexpect.pxssh.pxssh() #创建pxssh对象
hostname = '192.168.3.2' #定义主机
username = 'root' #定义用户
password = 'jiakb' #定义密码
s.login(hostname,username,password) #登录服务器
s.sendline('uptime') #执行命令
s.prompt() #匹配命令提示符,多条命令时每次都要加这一条
s.sendline('who') #执行多次命令
print("----------loginout---------") #中间可以插入一些自定义东西
s.logout() #退出登录
except pxssh.ExceptionPxssh as e: #捕捉登录错误
print("pxssh faild on login")
print(str(e))
#long_ssh()