我发现 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
但是当我使用一些类似 shell 的应用程序远程登录到服务器时,我得到的结果相当好,整洁,没有奇怪的字符。下面是我使用 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