原文:
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,輸入...