Telnetlib取得不可读字符,在Cygwin或PuTTY中。

2024-03-28 09:48:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现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

Tags: com信息hostread字符realtnwrite
1条回答
网友
1楼 · 发布于 2024-03-28 09:48:28

这些看起来很像终端转义序列,缺少转义字节(0x1b)。在许多终端中,某些字节序列具有特殊效果,例如改变颜色、移动光标等。例如,\x1b[3;1H表示在VT100或兼容终端上“将光标移到第3行,第1列”,大多数终端都是。(VT100早就死了,但是许多终端应用程序,如Terminal.app、GNOME-terminal和xterm,仍然使用这些转义序列。)

您可能得到了转义字节(0x1b),但它正在以某种方式被过滤。repr在这里有帮助,因为它显示了字符串中的实际内容。你也可以得到a list of common escape sequences。在

相关问题 更多 >