2017-08-21 11 views
0

私はRouterAにtelnetし、そのRouterAからRouterBに再度telnetするプロセスを自動化しようとしています。私はRouterAにtelnetするコードを持っていますが、それはうまく動作しますが、私はRouterAからRouterBにtelnetできません。セッションが応答しなくなります。私は何か間違っている。誰かが私を導くことができますか?Pythonのネストされたtelnet - telnetのTelnet

Below is my code: 

import os 
import telnetlib 
import re 

def telNetCall(): 
host = "15.xx.xx.xx" 
user = "admin" 
password = "password" 
enable_password = "enable_password" 
telnet = telnetlib.Telnet(host) 


telnet.read_until('Username: ', 3) 
telnet.write(user + '\r') 
telnet.read_until('Password: ', 3) 
telnet.write(password + '\r') 
telnet.write('enable' + '\r\n') 
telnet.write(enable_password + '\r\n') 
telnet.read_until("#") 
telnet.write("telnet 20.xx.xx.xx" + '\r\n') 
telnet.read_until('Username: ', 3) 
telnet.write(user + '\r') 
telnet.read_until('Password: ', 3) 
telnet.write(password + '\r') 
telnet.write('enable' + '\r\n') 
telnet.write(enable_password + '\r\n') 
telnet.write("show logg"+ "\r\n") 
telnet.write('exit' + '\r') 
a = telnet.read_all() 
f = open(host, 'w') 
f.write(str(a)) 
telNetCall() 

コードは動作していますが、実行には非常に時間がかかります。コードを効率的に実行できないようなことをやっていると思います。コードに問題がある場合は、提案を歓迎します。どんな助けでも大歓迎です。

私はエラーを理解しており、現在は問題ありません。今は5秒もかかりません。

+0

なぜあなたはしばしば単なる復帰を送信し、cr-lfではないのですか?手動でこれをやろうとしましたか?あなたはそれがあなたのスクリプトにあるべきだと言うように出力はありますか? –

+0

返信いただきありがとうございます。私は手動でRouterAにtelnetすることができ、そこからRouterBにTelnetで接続できます。それは正常に動作しています。そのスクリプトだけで起こっていない。 – Dhrumil

+1

私は最近、コードが実際に動作することを知りました。実行を完了するのに約8〜9分かかります。それは私が間違っていることをしていることを意味します。主に、最後の5つのコマンドを実行するのに多くの時間がかかります。誰かがそれに光を当てることができるなら、私は非常に感謝します。 – Dhrumil

答えて

-1

read_until()またはread_eager()のような別のread_xx()関数を使用できます。以下Telnet.read_all()

を参照してくださいコメント:

EOFまでの全てのデータを読み込みます。接続が閉じられるまでブロックします。