我现在正尝试在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做它,没关系:
但后来我试图从我的剧本中读取回应,我看到那样的样子:
请告诉我这些符号的含义是什么? 有没有办法从我的日志中删除它们?
P.S。试过所有其他阅读方式,比如read_all。尝试没有decode(),尝试解码('utf-8'),但符号总是在这里。我还应该做什么?
谢谢你,Mairy。
答案 0 :(得分:1)
您的接入点认为它正在与终端仿真器通信。在现已撤销的标准ANSI X3.64之后,这些符号是所谓的“ANSI转义码”。
字符串Escape
- [
- K
表示“擦除到行尾”。字符串Escape
- [
- 1
- 6
- D
表示“将光标向左移动16个空格。”
您可以说服您的接入点它没有与终端仿真器通信,或者它正在与非ANSI终端仿真器通信,或者
您可以使用适当的正则表达式(例如msg = re.sub('\x1b\\[\\d*[A-Z]', '', msg)
参考: