模塊:pexpect
簡介:可以實現命令行內自動捕捉關鍵字,自動輸入內容並執行
#實現交互pexpect模塊
#先要安裝軟件包pexpect
#-*-coding:utf-8 -*-
#實現遠程登錄
def ssh():
import pexpect,sys
child = pexpect.spawn("/usr/bin/sh -c 'ssh -p 22 [email protected]'") #定義一個對象
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()