我发现python的telnetlib模块有一个奇怪的问题。在获取下面的一些信息时,一定要用teli的字符来显示它的一些奇怪的信息,就像下面的代码一样:
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的应用程序telnet到服务器时,我得到的是非常好和整洁的,没有奇怪的字符。以下是我使用cygwin得到的结果:
^{pr2}$有人遇到过同样的问题吗?为什么会这样?当我使用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
这些看起来很像终端转义序列,缺少转义字节(
0x1b
)。在许多终端中,某些字节序列具有特殊效果,例如改变颜色、移动光标等。例如,\x1b[3;1H
表示在VT100或兼容终端上“将光标移到第3行,第1列”,大多数终端都是。(VT100早就死了,但是许多终端应用程序,如Terminal.app
、GNOME-terminal和xterm
,仍然使用这些转义序列。)您可能得到了转义字节(
0x1b
),但它正在以某种方式被过滤。repr
在这里有帮助,因为它显示了字符串中的实际内容。你也可以得到a list of common escape sequences。在相关问题 更多 >
编程相关推荐