2016-10-12 122 views
2

大家好,你好!Python遠程登錄客戶端

我目前正在嘗試爲Python 2.7使用Telnetlib(https://docs.python.org/2/library/telnetlib.html)與某些外部設備進行通信。

我已經建立了基礎:

import sys 
import telnetlib 
tn_ip = xxxx 
tn_port = xxxx 
tn_username = xxxxx 
tn_password = xxxx 

searchfor = "Specificdata" 

def telnet(): 
    try: 
     tn = telnetlib.Telnet(tn, tn, 15) 
     tn.set_debuglevel(100) 
     tn.read_until("login: ") 
     tn.write(tn_username + "\n") 
     tn.read_until("Password: ") 
     tn.write(tn_password + "\n") 
     tn.read_until(searchfor) 
     print "Found it!" 
    except: 
     print "Unable to connect to Telnet server: " + tn_ip 

telnet() 

我試圖去通過所有它的輸出(這是相當多)的數據,直到我趕上我需要什麼。雖然它的登錄非常好,甚至可以找到我正在查找的數據,並打印出我發現的信息,但我試圖採用一種方法來保持與telnet的連接處於打開狀態,因爲可能存在其他數據(或重複數據)我會失蹤,如果我註銷並重新登錄。

有誰知道如何做到這一點?

+0

您是否有一份您需要的特定信息的列表,或者您是否希望Telnet連接無限期地保持打開狀態? – VergeA

+0

謝謝您的評論!我正在尋找幾條信息。當被觸發時,其他的東西會被激活,所以我真的很想保持連接打開,同時掃描。 – user5740843

+0

您可以使telnet連接對象成爲類的實例變量。在構造/初始化類的過程中,執行登錄過程,然後通過委託給實例變量,可以根據需要多次調用read_until()方法。當班級被破壞/當你不再需要連接時,關閉它。 – VergeA

回答

2

好像你想連接到外部設備一次,每次看到特定的字符串時都會打印一條消息。

import sys 
import telnetlib 
tn_ip = "0.0.0.0" 
tn_port = "23" 
tn_username = "xxxxx" 
tn_password = "xxxx" 

searchfor = "Specificdata" 


def telnet(): 
    try: 
     tn = telnetlib.Telnet(tn_ip, tn_port, 15) 
    except: 
     print "Unable to connect to Telnet server: " + tn_ip 
     return 
    tn.set_debuglevel(100) 
    tn.read_until("login: ") 
    tn.write(tn_username + "\n") 
    tn.read_until("Password: ") 
    tn.write(tn_password + "\n") 
    while True: 
     tn.read_until(searchfor) 
     print "Found it" 

telnet()