我試圖用python3自動執行一些telnet操作。所以我開始在telnetlib中使用build(而不是pexpect)。telnetlib read_until()函數混淆
其實一切工作到目前爲止,但我不完全瞭解如何read_until的工作 - 實際上文檔說,你可以設置一個超時,如果沒有找到搜索字符串超時發回一個空字節值,或者如果有另一個值可以存儲爲返回值!
這有道理嗎?!
如果我想read_until某個值 - 我怎麼知道這個值是真正的函數讀取的。此外,我無法找到如何檢查超時是否被擊中。
我現在的解決方法是:
output = telnet.read_until(str.encode(hostname), 3)
if re.search(hostname, bytes.decode(output), re.IGNORECASE):
#do something when the output matches the searchstring
else:
#stop the function
但是這並沒有任何意義對我來說,也許你們現在是更好的解決方案
感謝您的快速回復! 我現在做unistand如何read_until的工作 - stil它沒有多少意義,爲什麼它是這樣實現的,但可以!
我改寫了我的實現我們: 輸出= telnet.read_until(hostname.encode(),3) 如果re.search(re.escape(主機名),output.decode(),旗幟= re.IGNORECASE ): 提出的另一個問題 - 是不是有必要定義hostname.encode('ascii')或類似的東西? like telnet.write(password.encode('ascii')+ b「\ n」) – herbert 2010-12-15 11:05:38
@Herbert:不客氣。如果你使用編碼或解碼而不指定編解碼器,它將使用系統默認的('sys.getdefaultencoding()'),它在Python 2中是ascii,在Python 3中是utf-8。 – 2010-12-15 11:14:00
好,我正在使用python 3它是UFT-8,我希望支持 - 希望telnet實現在不同的客戶端上也支持UTF-8 :) – herbert 2010-12-15 11:31:27