1

我现在正在尝试在 Python 3.4 中使用 telnetlib。我想要的只是尝试向我的接入点发送命令并得到一些响应。我的代码:

`import telnetlib
 import time

 user='admin'
 password='admin'
 host='192.168.1.1'


 try:
    tn=telnetlib.Telnet("host")
    tn.read_until(b"Login: ")
    tn.write(user.encode() + "\r\n".encode())
    tn.read_until(b"Password: ")
    tn.write(password.encode() + "\r\n".encode())
    print("Connection establised")
 except Exception:
    print("Connection failed")

 cmd="interface AccessPoint\r\n"
 tn.write(cmd.encode())
 cmd2="ssid TEST\r\n"
 tn.write(cmd2.encode())

 output=n.read_eager()
 while output:
    print(output.decode())
    time.sleep(.2)
    output=tn.read_eager()

` 例如,此脚本应将 SSID 的名称更改为 TEST。然后我在Putty中做,就可以了: 在此处输入图像描述

但是后来我试图从我的脚本中读取响应,我看到这样的东西:

在此处输入图像描述

请告诉我所有这些符号是什么意思?有没有办法把它们从我的原木上剪下来?

PS 尝试了所有其他的阅读方式,比如 read_all。尝试不使用 decode(),尝试使用 decode('utf-8'),但符号总是在这里。我还应该做什么?

谢谢你,梅里。

4

1 回答 1

1

您的接入点认为它正在与终端仿真器通信。这些符号在现已撤销的标准 ANSI X3.64 之后被称为“ANSI 转义码”。

字符串Escape- [-K表示“擦除到行尾”。字符串Escape- [- 1- 6-D表示“将光标向左移动 16 个空格”。

  • 您可以让您的接入点相信它不是在与终端仿真器通信,或者它正在与非 ANSI 终端仿真器通信,或者

  • 您可以使用适当的正则表达式从记录的字符串中删除它们,例如msg = re.sub('\x1b\\[\\d*[A-Z]', '', msg)

参考:

于 2014-08-26T15:56:25.593 回答