2016-10-12 21 views
2

誰もが、こんにちは!Python telnetクライアント

私は現在、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() 
関連する問題