Python の telnetlib モジュールに奇妙な問題が見つかりました。telnetlib を使用してサーバーにアクセスし、情報を取得しようとすると、常に奇妙な文字が表示されます。エンコードの問題ではないと確信しています。出力は次のようになります。
1[2J[3;1HPort Type IP1 IP2 IP3 IP4[4;1H 01 Real COM [5;1H 02 Real COM [6;1H 03 Real COM [7;1H 04 Real COM [8;1H 05 Real COM [9;1H 06 Real COM [10;1H 07 Real COM [11;1H 08 Real COM [12;1H 09 Real COM [13;1H 10 Real COM [14;1H 11 Real COM [15;1H 12 Real COM [16;1H 13 Real COM [17;1H 14 Real COM [18;1H 15 Real COM [19;1H 16 Real COM [20;1H
しかし、いくつかのシェルのようなアプリケーションを使用してサーバーに telnet で接続すると、得られるものは非常に優れており、奇妙な文字はありません。以下は、cygwin を使用して得た結果です。
Port Type IP1 IP2 IP3 IP4
01 Real COM Listen
02 Real COM Listen
03 Real COM 147.128.14.147
04 Real COM Listen
05 Real COM Listen
06 Real COM Listen
07 Real COM Listen
08 Real COM Listen
09 Real COM Listen
10 Real COM Listen
11 Real COM Listen
12 Real COM Listen
13 Real COM Listen
14 Real COM Listen
15 Real COM Listen
16 Real COM Listen
誰かが同じ問題に遭遇しましたか?そして、なぜこれが起こるのですか?telnetlib を使用する場合、どうすれば「きれいな」結果を得ることができますか?
以下は簡単なスクリプトです。
import telnetlib
if __name__ == '__main__':
HOST = '10.185.20.2'
tn = telnetlib.Telnet(HOST)
r1 = tn.read_until('selection: ', 5)
print r1
tn.write('8' + '\r\n')
r2 = tn.read_until('selection: ', 5)
print r2
tn.write('1 ' + '\r\n')
r3 = tn.read_until('cancel ...', 5)
print r3