python終端模擬工具pexpect

2021-08-30 17:39:19 字數 2006 閱讀 1313

原文:

pexpect是乙個純python模組。 可以用來和ssh、ftp、passwd、telnet 等命令列程式進行自動互動。實現與命令列互動的自動化.

它提供了兩個主要介面 run()函式和spawn類.

run()函式

run功能相對簡單,只能實現簡單互動

run(command,timeout=-1,withexitstatus=false,events=none,extra_args=none, logfile=none, cwd=none, env=none)
run執行命令,然後返回結果,與os.system類似.

示例

pexpect.run('ls -la')

# 返回值(輸出,退出狀態)

(command_output, exitstatus) = pexpect.run('ls -l /bin', withexitstatus=1)

spawn類

spawn功能比run強大,可以實現更複雜互動

class spawn 

__init__(self, command, args=, timeout=30, maxread=2000, searchwindowsize=none, logfile=none, cwd=none, env=none)

timeout指定互動是等待的超時值

maxread設定read buffer大小. 每次pexpect嘗試從tty(teletype終端)從讀取的最大位元組數.

searchwindowsize 指定了從輸入緩衝區中進行模式匹配的位置,預設從開始匹配.

logfile 引數指定日誌的記錄位置

工作過程

# 第一步與終端建立連線

child = pexpect.spawn('scp foo [email protected]:.')

# 第二步等待終端返回特定內容

child.expect('password:')

# 第三步根據返回內容傳送命令進行互動

child.sendline(mypassword)

pxssh類

pxssh是pexpect的派生類,用於建立ssh連線,比pexpect好用.

login()  建立到目標機器的ssh連線

logout() 釋放該連線

prompt() 等待提示符,通常用於等待命令執行結束

工作過程與pexpect相同

# 初始化pxssh示例

s = pxssh.pxssh() 

hostname = raw_input('hostname: ') 

username = raw_input('username: ') 

password = getpass.getpass('password: ') 

# 建立ssh連線

s.login (hostname, username, password) 

# 傳送命令到遠端終端

s.sendline ('uptime') # run a command 

# 等待遠端終端返回

s.prompt() # match the prompt 

# 列印匹配到的內容

print s.before  # print everything before the propt. 

# 傳送命令到遠端終端

s.sendline ('ls -l') 

# 等待遠端終端返回

s.prompt() 

# 列印匹配到的內容

print s.before 

s.sendline ('df') 

s.prompt() 

print s.before 

# 釋放ssh連線

s.logout()

python 終端模擬模組 pexpect

簡單介紹 pexpect是 don libes 的 expect 語言的乙個 python 實現,是乙個用來啟動子程式,並使用正規表示式對程式輸出做出特定響應,以此實現與其自動互動的 python 模組。它可以用來實現與ssh,ftp,telnet等程式的自動互動,參考官方文件 安裝均可以使用pip...

在終端模擬下雪

及解釋 charles的皮卡丘 試試在終端模擬下雪的效果唄?比較簡單,其實我寫這篇部落格的目的是講錄製gif工具 screentogif 它是一款免費開源 體積極小的gif錄製工具。其提供的視窗對齊功能是我等眾多強迫症患者的福音啊。也支援一定程度的編輯。匯出時建議選擇 2.0 編碼器,畫質和大小都比...

終端分屏工具screen

linux自帶vim有分屏功能,但是只能分屏顯示檔案,不能同時顯示多個終端,針對這一需要,推薦乙個終端分屏工具。使用screen分屏 只能上下分屏,不能左右分屏 1 安裝工具 在ubuntu系統中使用sudo apt get install screen 安裝screen工具 2 使用工具 1,輸入...