日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

python Pexpect模塊的使用

瀏覽:181日期:2022-07-01 10:57:21
Pexpect簡介

在講解Pexpect之前,我們需要先了解一下Expect這個腳本語言,它是由TCL語言實現(xiàn)的,主要用于人機交互式對話的自動化控制,可以用來完成ssh、ftp、telnet等命令行程序的自動化交互。Pexpect其實就是一個用Python語言實現(xiàn)的類Expect功能的模塊,通過它就可以在Python中完成Expect所完成的功能。

Pexpect的基本工作流程,基本可以分為以下三個步驟:

首先用spawn來執(zhí)行一個程序; 然后用expect方法來等待指定的關(guān)鍵字,這個關(guān)鍵字是被執(zhí)行的程序打印到標(biāo)準(zhǔn)輸出上面的; 最后當(dāng)發(fā)現(xiàn)這個關(guān)鍵字以后,使用send/sendline方法發(fā)送字符串給這個程序。

通常在程序中第一步只需要做一次,第二步和第三步會不停的循環(huán)來完成整個工作。當(dāng)然在Pexpect中還有很多其他方法,編寫程序時可以根據(jù)自己的需求選擇使用。

Pexpect APIspawn類

class spawn(SpawnBase): ’’’This is the main class interface for Pexpect. Use this class to start and control child applications. ’’’ # This is purely informational now - changing it has no effect use_native_pty_fork = use_native_pty_fork def __init__(self, command, args=[], timeout=30, maxread=2000, searchwindowsize=None, logfile=None, cwd=None, env=None, ignore_sighup=False, echo=True, preexec_fn=None, encoding=None, codec_errors=’strict’, dimensions=None, use_poll=False):

通過spawn()方法用來執(zhí)行一個程序,返回程序的操作句柄,后續(xù)就可以通過操作句柄來與這個程序進行交互了。

# 子程序退出時會引發(fā)pexpect.EOF異常,即如果捕捉到pexpect.EOF則說明子程序已退出process = pexpect.spawn(’ls -l’)process.expect(pexpect.EOF)result = process.before.decode()print(result)

command參數(shù)并不支持字符的特殊含義(比如管道符、通配符、重定向符等),在Linux系統(tǒng)中如果想使用這些符號的特殊含義就必須加上shell來運行。

# 示例一process = pexpect.spawn(’bash -c 'ls -l | wc -l'’)process.expect(pexpect.EOF)# 示例二# 第一個參數(shù)為主程序,而args列表里的元素是主程序的參數(shù)process = pexpect.spawn(’bash’, [’-c’, ’ls -l | wc -l’])process.expect(pexpect.EOF)expect()方法

當(dāng)使用spawn()方法啟動了一個程序并返回程序控制句柄后,就可以使用expect()方法來等待指定的關(guān)鍵字了。關(guān)鍵字可以是字符串、正則表達式、EOF、TIMEOUT或者以上類型組成的列表,用來匹配子程序返回的結(jié)果。如果只提供字符串等非列表,則匹配成功后返回0,如果提供列表,則返回匹配成功的列表元素的索引,匹配失敗會拋出異常。

process = pexpect.spawn(’ls -l’)# 匹配expect字符process.expect(’expect’)

before/after/match:當(dāng)expect()匹配到關(guān)鍵字之后,系統(tǒng)會自動給這三個變量賦值,通過這三個變量可以獲取子程序運行輸出。

before:保存了到匹配到關(guān)鍵字為止,緩存里面已有的所有數(shù)據(jù)。也就是說如果緩存里緩存了100個字符的時候匹配到了關(guān)鍵字,那before就是除了匹配到的關(guān)鍵字之外的所有字符。 after:保存了匹配到了關(guān)鍵字。 match:保存的是匹配到的正則表達式的實例,和上面的after相比一個是匹配到的字符串,一個是匹配到的正則表達式實例。

process = pexpect.spawn(’ls -l’)process.expect(’expect’)print(process.before.decode())print(process.after.decode())print(process.match)

如果expect()過程中發(fā)生錯誤,那么before保存到目前為止緩存里的所有數(shù)據(jù),after和match都是None。

如果沒匹配成功則會拋出異常,可以通過匹配異常,讓異常不在終端顯示。

process = pexpect.spawn(’ls -l’)# 返回0表示匹配成功,返回1和2表示匹配到了異常index = process.expect([’expect’, pexpect.EOF, pexpect.TIMEOUT])print(index)send()/sendline()方法

sendline()和send()的區(qū)別就是sendline()發(fā)送的是帶回車符的字符串。

process = pexpect.spawn(’nslookup’)process.expect(’>’)process.sendline(’www.baidu.com’)process.expect(’>’)print(process.before.decode())process.sendline(’exit’)

Pexpect還提供了很多其他方法,這里不再詳細闡述,使用時可參考其官方文檔。

interact()方法

interact()表示將終端控制權(quán)交給用戶(或者說將標(biāo)準(zhǔn)輸入交給用戶)。通常情況下Pexpect會接管所有的輸入和輸出,如果需要用戶介入完成部分工作的時候,interact()就派上用場了。

# 讓出控制權(quán)給用戶process.interact()# 通過設(shè)置escape_character的值定義返回碼,當(dāng)用戶輸入此值后,會將控制權(quán)重新交給pexpectprocess.interact(escape_character=’x1d’, input_filter=None, output_filter=None)應(yīng)用示例

接下來通過SSH連接遠程服務(wù)器的示例來體驗下Pexpect的使用方法。

#!/usr/bin/env python3.6#-*- coding:utf-8 -*-import pexpectdef main(server): command = ’ssh -p %s %s@%s’ % (server[’port’], server[’username’], server[’hostname’]) process = pexpect.spawn(command, timeout=30) print(f’命令: {command}’) expect_list = [ ’yes/no’, ’password:’, pexpect.EOF, pexpect.TIMEOUT, ] index = process.expect(expect_list) print(f’匹配到: {index} => {expect_list[index]}’) if index == 0: process.sendline('yes') expect_list = [ ’password:’, pexpect.EOF, pexpect.TIMEOUT, ] index = process.expect(expect_list) print(f’匹配到: {index} => {expect_list[index]}’) if index == 0: process.sendline(server[’password’]) process.interact() else: print(’EOF or TIMEOUT’) elif index == 1: process.sendline(server[’password’]) process.interact() else: print(’EOF or TIMEOUT’) if __name__ == ’__main__’: server = { ’hostname’: ’192.168.1.100’, ’port’: ’22’, ’username’: ’admin’, ’password’: ’ABuklhsfnVyxI’, } main(server)

以上就是python Pexpect模塊的使用的詳細內(nèi)容,更多關(guān)于python Pexpect模塊的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
午夜影院欧美| 国产精品日本一区二区不卡视频 | 性欧美长视频| 天堂av在线| 人人精品亚洲| 欧美精选一区二区三区| 亚洲激情二区| 日韩专区欧美专区| 亚洲综合中文| 国产欧美日韩在线一区二区 | 99日韩精品| 亚洲欧美久久精品| 97精品久久| 麻豆国产精品视频| 福利视频一区| 成人羞羞视频播放网站| 在线一区免费观看| 婷婷综合国产| 久久av偷拍| 欧产日产国产精品视频| 午夜久久久久| 日韩va亚洲va欧美va久久| 国产精品videosex极品| 国产一二在线播放| 亚洲高清激情| 亚洲精选91| 免费日韩一区二区三区| 日韩和的一区二在线| 在线午夜精品| 日韩精品欧美大片| 久久的色偷偷| 欧美日韩在线观看首页| 亚洲色诱最新| 国产精品网址| 亚洲高清久久| 国产亚洲观看| 日韩在线精品| 亚洲三级国产| 高清在线一区| 欧美日韩免费观看一区=区三区| 一区二区日韩免费看| 国产日韩欧美一区在线| 久久精品青草| 久久精品 人人爱| 精品高清久久| 午夜国产精品视频免费体验区| 欧美伊人影院| 久久国产直播| 欧美一区激情| 亚洲高清二区| 国产乱码精品一区二区三区四区| 亚洲不卡系列| 日本少妇一区二区| 最近高清中文在线字幕在线观看1| 9色国产精品| 久久久精品国产**网站| 一区二区自拍| 欧美a在线观看| 西西人体一区二区| 免费一级欧美片在线观看网站| 99热精品久久| 国产精品久久国产愉拍| 欧美日韩国产传媒| 久久99影视| 每日更新成人在线视频| 精品国产午夜| 婷婷综合一区| 激情自拍一区| 老鸭窝一区二区久久精品| 伊人久久成人| 久久伊人久久| 亚洲精品视频一二三区| 精品免费av在线| 91在线成人| 日韩亚洲国产欧美| 国产毛片精品| 日本大胆欧美人术艺术动态| 麻豆mv在线观看| 久久国产乱子精品免费女| 在线视频亚洲| 三级小说欧洲区亚洲区| 欧美国产另类| 日韩国产一区二| 午夜久久美女| 香蕉成人av| 久久亚洲精精品中文字幕| 亚洲tv在线| 婷婷成人基地| 色偷偷偷在线视频播放| 久久精品72免费观看| 黄色av一区| 日本免费一区二区三区四区| 欧美久久一区二区三区| 日韩中文字幕1| 日韩视频在线一区二区三区 | 久久精品99国产精品日本| 中文精品在线| 国产一区日韩欧美| 卡一卡二国产精品| 91九色综合| 亚洲日本在线观看视频| 亚洲综合欧美| 国产精品外国| 99视频精品全国免费| 国产粉嫩在线观看| 精品国产不卡| 麻豆精品视频在线观看免费| 日韩精品久久久久久久软件91| 在线一区欧美| 日韩午夜在线| 国产精品毛片| 免费久久99精品国产自在现线| 99精品一区| 日韩av免费| 免费在线小视频| 亚洲人成在线网站| 波多视频一区| 欧美不卡高清一区二区三区| 精品资源在线| 精品国产一区二区三区av片| 91精品一区| 欧美在线看片| 国产日韩三级| 国产精品久av福利在线观看| 欧美日韩1区2区3区| 日韩精品五月天| 91欧美精品| 国产精品www994| 精品久久视频| av最新在线| 欧洲亚洲一区二区三区| 亚洲午夜在线| 亚洲欧美日本视频在线观看| 中日韩男男gay无套| 99re国产精品| 亚洲精品免费观看| 国产图片一区| 黄色在线观看www| 久久精品主播| 亚洲综合欧美| 四虎在线精品| 国产精品主播| 91亚洲一区| 欧美亚洲激情| 久久成人亚洲| 欧美在线看片| 高清在线一区| 不卡视频在线| 亚洲三级av| 欧美亚洲自偷自偷| 国产精品99在线观看| 五月天激情综合网| 日韩一区二区三区四区五区| 国产精品久一| 精品捆绑调教一区二区三区| 午夜一级久久| 国产精品成人3p一区二区三区| 国产一二在线播放| 中文精品在线| 国产美女视频一区二区| 在线天堂资源www在线污| 自由日本语亚洲人高潮| 欧美一级网站| 日韩国产一区二区| 亚洲午夜电影| 日韩精品一区二区三区中文在线| 老司机免费视频一区二区三区| 91精品婷婷色在线观看| 免费日本视频一区| 国产精品sss在线观看av| 午夜av成人| 日韩在线黄色| 国产精品精品国产一区二区| 男人天堂欧美日韩| 精品亚洲成人| 欧美日韩精品一本二本三本| 91精品国产自产精品男人的天堂| 国产高潮在线| 国产精品美女久久久浪潮软件| 日本一不卡视频| 国产成人精品福利| 巨乳诱惑日韩免费av| 美女国产一区二区三区| 影视先锋久久| 国产精品一级| 欧美亚洲国产激情| 欧美成a人片免费观看久久五月天| 欧美日韩国产在线一区| 美女视频一区在线观看| 99视频在线精品国自产拍免费观看| 国产免费av国片精品草莓男男| 久久久9色精品国产一区二区三区| 日本伊人午夜精品| 99精品网站| 奇米狠狠一区二区三区| 亚洲性图久久| 捆绑调教美女网站视频一区| 日韩制服丝袜av| 成人日韩精品| 国产日韩一区|