仮想環境のルータ(Cisco)に対してpythonのtelnetlibを使用し、telnet接続後
コマンド入力した結果を抽出したいと思い以下のプログラムを作成しました。
一部の挙動が理解できないため、なぜこのような出力結果となるのかご教示ください。
疑問点
下記コードを動作させるとoutput1の意図した結果となるのですが★印の個所をコメントアウトするとoutput2の出力となり意図しない出力となります。
なぜ tn.write(b"\n\n") のありなしで出力結果が大きく変わるのでしょうか?
python
1import telnetlib 2 3HOST = "192.168.205.10" 4PORT = 23 5 6tn = telnetlib.Telnet(HOST, PORT) 7 8tn.write(b"\n\n") 9 10tn.read_until(b">",5) 11tn.write(b"enable\n") 12 13tn.read_until(b"#") 14tn.write(b"ter len 0\n") 15 16# 見やすいように改行 17# tn.write(b"\n\n") <<★ 18 19tn.read_until(b"#") 20tn.write(b"show ip int brief\n") 21byte_result = tn.read_until(b"#") 22 23print("------------------") 24print(byte_result) 25print("------------------") 26 27print("") 28 29str_result = byte_result.decode() 30print("==================") 31print(str_result) 32print("==================") 33input()
output1
1------------------ 2b'show ip int brief\r\nInterface IP-Address OK? Method Status Protocol\r\nEthernet0/0 192.168.1.1 YES NVRAM up up \r\nEthernet0/1 192.168.4.1 YES NVRAM up up \r\nEthernet0/2 unassigned YES NVRAM administratively down down \r\nEthernet0/3 192.168.10.1 YES NVRAM up up \r\nR1#' 3------------------ 4 5================== 6show ip int brief 7Interface IP-Address OK? Method Status Protocol 8Ethernet0/0 192.168.1.1 YES NVRAM up up 9Ethernet0/1 192.168.4.1 YES NVRAM up up 10Ethernet0/2 unassigned YES NVRAM administratively down down 11Ethernet0/3 192.168.10.1 YES NVRAM up up 12R1# 13==================
output2
1------------------ 2b'\r\nR1#' 3------------------ 4 5================== 6 7R1# 8==================
補足情報(FW/ツールのバージョンなど)
どちらもtelnet接続、コマンドの投入自体は正常に終了していることは確認済みです。
<使用しているバージョン>
Python 3.7.0
回答1件
あなたの回答
tips
プレビュー