最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用Pexpect庫實(shí)現(xiàn)自動(dòng)化與終端交互的任務(wù)

 更新時(shí)間:2023年12月28日 10:20:30   作者:老虎愛代碼  
Pexpect 是一個(gè) Python 庫,用于自動(dòng)化與終端交互的任務(wù),它提供了一種簡單的方式來編寫腳本,以便與終端程序進(jìn)行交互,下面我們就來深入了解一下Pexpect庫的具體使用吧

Pexpect 是一個(gè) Python 庫,用于自動(dòng)化與終端交互的任務(wù)。它提供了一種簡單的方式來編寫腳本,以便與終端程序進(jìn)行交互。以下是 Pexpect 的一些常用參數(shù)和方法的更詳細(xì)說明:

常用參數(shù):

command:這是你想要啟動(dòng)的命令行程序的路徑。例如,如果你想要啟動(dòng)一個(gè)名為 ‘ftp’ 的程序,你可以傳遞 ‘/usr/bin/ftp’ 作為這個(gè)參數(shù)的值。

timeout:這是你愿意等待命令行程序輸出的最大時(shí)間(以秒為單位)。如果在這個(gè)時(shí)間內(nèi),你沒有從命令行程序收到任何輸出,Pexpect 將引發(fā)一個(gè)超時(shí)異常。

maxread:這是你想要從命令行程序中讀取的最大字節(jié)數(shù)。默認(rèn)值是 2000,即最多讀取 2000 個(gè)字節(jié)。

searchwindowsize:這是你想要搜索的字符串或正則表達(dá)式的窗口大小。默認(rèn)值是 25,這意味著 Pexpect 將只檢查最近的 25 個(gè)字符或行來尋找匹配項(xiàng)。

logfile:這是一個(gè)文件對象,Pexpect 將把所有標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到這個(gè)文件。如果你不提供這個(gè)參數(shù),輸出將仍然顯示在控制臺上。

常用方法:

spawn():

這是啟動(dòng)一個(gè)新的命令行程序的方法。你可以傳遞一個(gè)命令行程序的路徑作為參數(shù)。例如,ftp = pexpect.spawn(‘/usr/bin/ftp’) 將啟動(dòng) FTP 客戶端。

expect():

這是等待命令行程序輸出特定字符串或正則表達(dá)式的方法。你可以傳遞一個(gè)字符串或正則表達(dá)式作為參數(shù),然后 Pexpect 將等待直到程序輸出這個(gè)字符串或正則表達(dá)式。例如,ftp.expect('ftp> ') 將等待直到 FTP 客戶端提示你輸入命令。

sendline():

這是向命令行程序發(fā)送一行命令的方法。你可以傳遞一個(gè)字符串作為參數(shù),然后 Pexpect 將把這個(gè)字符串發(fā)送給程序。例如,ftp.sendline(‘ls’) 將發(fā)送 ‘ls’ 命令到 FTP 客戶端,然后等待程序輸出結(jié)果。

close():

這是關(guān)閉與命令行程序的連接的方法。當(dāng)你完成與程序的交互后,你應(yīng)該調(diào)用這個(gè)方法來釋放資源。例如,ftp.close() 將關(guān)閉與 FTP 客戶端的連接。

interact():

這是啟動(dòng)交互模式的方法。在交互模式下,你可以手動(dòng)控制與命令行程序的交互。例如,你可以使用鍵盤輸入命令,然后使用 sendline() 方法將它們發(fā)送到程序。

Pexpect可以通過以下方式進(jìn)行安裝:

pip安裝:在命令行輸入pip3 install pexpect即可。

easy_install安裝:在命令行輸入easy_install pexpect即可。

源碼安裝:下載Pexpect的源代碼包,解壓后進(jìn)入目錄,然后在命令行輸入python setup.py install即可。

#下載tcl源碼包:
wget http://prdownloads.sourceforge.net/tcl/tcl8.4.20-src.tar.gz。
#解壓并編譯安裝tcl:
tar zxvf tcl8.4.20-src.tar.gz,cd tcl8.4.20/unix/,./configure --prefix=/usr/tcl --enable-shared,make,make install。
#下載expect源碼包:wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz。
#解壓并編譯安裝expect:
tar zxvf expect5.45.tar.gz,
cd expect5.45,
./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.20/generic/,
make,
make install
#安裝完成之后做一個(gè)軟連接:
ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
#加入環(huán)境變量并測試:
echo 'export PATH=$PATH:/usr/expect/bin' >> /etc/profile

示例:

#!/usr/bin/env python
import pexpect
devices = {'iosv-1': {'prompt': 'lax-edg-r1#', 'ip': '192.168.2.51'},
 'iosv-2': {'prompt': 'lax-edg-r2#', 'ip': '192.168.2.52'}}
username = 'cisco'
password = 'cisco'
for device in devices.keys():
 device_prompt = devices[device]['prompt']
 child = pexpect.spawn('telnet ' + devices[device]['ip'])
 child.expect('Username:')
 child.sendline(username)
 child.expect('Password:')
 child.sendline(password)
 child.expect(device_prompt)
 child.sendline('show version | i V')
 child.expect(device_prompt)
 print(child.before)
 child.sendline('exit')

ssh:

from pexpect import pxssh
>>> child = pxssh.pxssh()
>>> child.login('192.168.2.51', 'cisco', 'cisco', auto_prompt_reset=False) 
True
>>> child.sendline('show version | i V')
19
>>> child.expect('lax-edg-r1#')
0
>>> child.before
b'show version | i V\r\nCisco IOS Software, IOSv Software (VIOSADVENTERPRISEK9-M), Version 15.8(3)M2, RELEASE SOFTWARE (fc2)\r\nProcessor 
board ID 98U40DKV403INHIULHYHB\r\n'
>>> child.logout()

ftp:

import pexpect

# 啟動(dòng) FTP 子程序
ftp = pexpect.spawn('ftp')

# 期望看到 'ftp>' 提示符
ftp.expect('ftp> ')

# 發(fā)送用戶名和密碼(假設(shè)為 'user' 和 'pass')
ftp.sendline('user')
ftp.sendline('pass')

# 期望登錄成功
ftp.expect('230 Login successful')

# 發(fā)送命令 'dir' 查看目錄列表
ftp.sendline('dir')
ftp.expect('Directory listing')

# 關(guān)閉 FTP 子程序
ftp.sendline('bye')

log:

import pexpect
import time

# 創(chuàng)建日志文件并設(shè)置 Pexpect 記錄日志
log_file = open('ftp_log.txt', 'w')
ftp = pexpect.spawn('ftp', logfile=log_file)
time.sleep(2)  # 讓子程序運(yùn)行一段時(shí)間以便記錄日志
log_file.close()  # 關(guān)閉日志文件

telnet:

import pexpect

# 啟動(dòng) Telnet 子程序
telnet = pexpect.spawn('telnet', ['hostname', 'port'])

# 期望看到 Telnet 提示符
telnet.expect('login: ')

# 發(fā)送用戶名和密碼(假設(shè)為 'user' 和 'pass')
telnet.sendline('user')
telnet.expect('Password:')
telnet.sendline('pass')

# 期望登錄成功并看到提示符(例如 '#' 或 '$')
telnet.expect('#')

# 使用 interact 方法進(jìn)行交互(注意:interact 方法會阻塞程序執(zhí)行直到子程序關(guān)閉)
telnet.interact()

到此這篇關(guān)于Python使用Pexpect庫實(shí)現(xiàn)自動(dòng)化與終端交互的任務(wù)的文章就介紹到這了,更多相關(guān)Python Pexpect內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法

    python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法

    這篇文章主要介紹了python實(shí)現(xiàn)快速文件格式批量轉(zhuǎn)換的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • python修改list中所有元素類型的三種方法

    python修改list中所有元素類型的三種方法

    下面小編就為大家分享一篇python修改list中所有元素類型的三種方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python項(xiàng)目管理工具Rye的工作原理

    Python項(xiàng)目管理工具Rye的工作原理

    在開發(fā)Python項(xiàng)目時(shí),有時(shí)會在一臺電腦上,同時(shí)存在多個(gè)python項(xiàng)目,而且每個(gè)項(xiàng)目的python版本和依賴可能都不一樣,此時(shí)需要使用python項(xiàng)目管理工具來進(jìn)行管理,rye是一個(gè)python項(xiàng)目管理工具,本文簡單介紹rye的工作原理
    2023-07-07
  • Python selenium抓取微博內(nèi)容的示例代碼

    Python selenium抓取微博內(nèi)容的示例代碼

    本篇文章主要介紹了Python selenium抓取微博內(nèi)容的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • Django之富文本(獲取內(nèi)容,設(shè)置內(nèi)容方式)

    Django之富文本(獲取內(nèi)容,設(shè)置內(nèi)容方式)

    這篇文章主要介紹了Django之富文本(獲取內(nèi)容,設(shè)置內(nèi)容方式),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python讀取csv和txt數(shù)據(jù)轉(zhuǎn)換成向量的實(shí)例

    python讀取csv和txt數(shù)據(jù)轉(zhuǎn)換成向量的實(shí)例

    今天小編就為大家分享一篇python讀取csv和txt數(shù)據(jù)轉(zhuǎn)換成向量的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python實(shí)現(xiàn)

    Python實(shí)現(xiàn)"驗(yàn)證回文串"的幾種方法

    這篇文章主要介紹了Python實(shí)現(xiàn)"驗(yàn)證回文串"的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 詳解Python下Flask-ApScheduler快速指南

    詳解Python下Flask-ApScheduler快速指南

    Flask是Python社區(qū)非常流行的一個(gè)Web開發(fā)框架,本文將嘗試將介紹APScheduler應(yīng)用于Flask之中,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Python中http請求方法庫匯總

    Python中http請求方法庫匯總

    最近在使用python做接口測試,發(fā)現(xiàn)python中http請求方法有許多種,今天抽點(diǎn)時(shí)間把相關(guān)內(nèi)容整理,對python http請求相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • python加密打包程序詳解

    python加密打包程序詳解

    這篇文章主要介紹了python加密打包程序,還給大家介紹了Python實(shí)現(xiàn)文件簡單加解密的方法,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04

最新評論

九龙坡区| 大邑县| 新竹县| 灵丘县| 兴义市| 邓州市| 栖霞市| 德格县| 喀什市| 奉化市| 襄城县| 青神县| 正宁县| 晋州市| 凤阳县| 岢岚县| 马山县| 崇州市| 绥江县| 榆林市| 吉木萨尔县| 瑞昌市| 广丰县| 上栗县| 永年县| 中超| 高雄县| 息烽县| 壤塘县| 儋州市| 邵阳县| 古田县| 疏附县| 长葛市| 南京市| 龙井市| 平湖市| 南华县| 灵丘县| 沂水县| 凌源市|