2012-04-05 23 views
1

私は、リモートデバイスから情報を取得するためにpythonのtelnetlibモジュールを使用しようとしています。残念ながら、リモートデバイスには「ログアウト」タイプのコマンドがないように見えます。 CTRL-]を使って手動で接続を終了する必要があります(手動でtelnetするとき)。私はTelnet.close()を使ってみましたが、データを返さないようです。Python telnet lib/logoutコマンドを使用する

提案?

HOST = "172.16.7.37" 
user = "Netcrypt" 
password = "Netcrypt" 

tn = telnetlib.Telnet(HOST) 

tn.read_until("User: ") 
tn.write(user + "\n") 
if password: 
    tn.read_until("Password: ") 
    tn.write(password + "\n") 

tn.write("session \n") 

print tn.read_until("NC_HOST> ") 

tn.close() 
+0

元の質問を編集し、そこに利用可能なコードの書式設定ツールを使用してコードを追加してください:

ここで作業コードです。 –

+0

コードが投稿されました – slappyjam

+0

「どのデータも返されていません」とはどういう意味ですか?どこに何かを返すと思いますか?最後の行までは正常に実行されていなければなりません。さもなければ、read_untilは返されません。 – j13r

答えて

2

あなたはtelnet接続にCTRL + ]のASCII文字を書いてみましたか?

tn.write('\x1d')

+0

私は 'tn.write( 'quit \ n')'をそれに続けますか? – slappyjam

+0

'quit'は、接続しているTelnetサーバーの有効なコマンドですか? Ctrl-]を使用して手動で接続を閉じる必要がある場合は、 '\ x1d'(Ctrl-のASCII値)を入力してください。 –

+0

'tn.write( '\ x1d')'を使用すると、接続が終了します。しかし、 'print tn.read_all()'の後に追加すると、ハングするだけです。私はどのように私は 'セッション'コマンドを発行した情報を得ることができない参照してください – slappyjam

0

私はそれのいずれかを必要としないことになりました。私はプロンプトを読んで、コマンドを発行し、次のプロンプトまで読む必要がありました。 read_all()の必要はありません。

import telnetlib 

HOST = "172.16.7.37" 
user = "Netcrypt" 
password = "Netcrypt" 

tn = telnetlib.Telnet(HOST) 

tn.read_until("User: ") 
tn.write(user + "\n") 
if password: 
    tn.read_until("Password: ") 
    tn.write(password + "\n") 

    tn.read_until('NC_HOST>') 

    tn.write("session\n") 

    data = tn.read_until('NC_HOST>') 

print data 
関連する問題