【问题标题】:Telnet output parsingTelnet 输出解析
【发布时间】:2014-10-19 19:37:46
【问题描述】:

我现在正在尝试在 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中做,就可以了:

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

请告诉我所有这些符号是什么意思? 有没有办法从我的原木中删除它们?

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

谢谢你,梅里。

【问题讨论】:

  • 您的问题中不需要` 块缩进。对内联代码使用反引号,对多行代码块使用缩进。缩进一大段代码的一种简单方法是全选,然后在文本编辑器上方的工具栏中按{}
  • 谢谢,下次会做的更好。)

标签: python telnetlib


【解决方案1】:

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

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

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

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

参考:

【讨论】:

    猜你喜欢
    • 2021-04-20
    • 2019-03-23
    • 2022-11-06
    • 2011-07-07
    • 1970-01-01
    • 2013-09-15
    • 2011-07-15
    • 2021-02-23
    • 2020-12-17
    相关资源
    最近更新 更多