2016-06-16 5 views
1

私のtelnet接続が成功したかどうかを知ることができるかどうか疑問に思っていますか?だから、Python telnet connection successful

、私は私のスイッチに接続されていると私は、コマンドに

telnet = telnetlib.Telnet(IP) 
telnet.read_until(b"User Name:") 
telnet.write(b"LOGIN\n") 
telnet.read_until(b"Password:") 
telnet.write(b"PASSWORD\n") 
# Here I want to know if I'm connected 
+0

telnet'のlib 'にはそのようなオプションはありませんが、サーバーが実際に成功した認証 – Harwee

+0

のために応答するかどうかつまり、サーバの応答を解析して確認することができ、私は方法のいくつかを考えるだろう接続が失われた場合は 'EOFError'を返します。おそらく、あなたのコードを 'Try/Except'節で囲むべきでしょう。こちらをご覧ください:https://docs.python.org/3.5/library/telnetlib.html –

+0

@Harwee私はあなたのヒントを使用して、それは完全に動作しています! – Eduloc

答えて

0

認証後に何かを書くつもりなら、read_allを使用しないでください。 EOFに到達するまで/接続が閉じられるまで接続がブロックされます。

最初に、puttyなどを使用して認証が成功したときに出力されるtelnetサーバーの出力を確認します。 read_untill認証後に照合する文字列。接続が成功するかどう

telnet = telnetlib.Telnet(IP) 
telnet.read_until(b"User Name:") 
telnet.write(b"LOGIN\n") 
telnet.read_until(b"Password:") 
telnet.write(b"PASSWORD\n") 

telnet.read_untill("string to be matched") 
+0

私は 'telnet.read_very_eager()'を使用しました – Eduloc

+0

@Harweeはい、それは正しいですtelnet.read_until()またはtelnet.read_very_eager()を使用する方が良いです – wind85

+0

両方のおかげで! :) – Eduloc

1

を書くことができれば、あなたはこのように行くことができれば:あなたは何をyoutはルータ/スイッチリターンを観察する場合

def is_connected(telnet_obj): 
    answer = telnet_obj.read_all() 
    if "connected" in answer:    #this test condition is not real is an example 
     return True 
    else: 
     return False 

をその状態をテストすることができます。この場合は、文字列が存在するかどうか、または答え変数に不足がないかどうかをテストします。