【发布时间】:2017-01-13 19:51:36
【问题描述】:
python 新手,但我正在尝试自动打开一个 telnet 会话(使用内置的“telnetlib”库)到路由器中,执行一个简单的命令(“spc”),将输出打印到本地控制台,然后离开。
#!/usr/bin/python
import sys
import telnetlib
HOST="54.18.5.0"
PORT=55555
tn=telnetlib.Telnet(HOST, PORT)
tn.read_until("Escape character is \'^]\'.")
tn.write("\u001d")
tn.read_until("telnet>")
tn.write("mode char" + "\n")
tn.write("spc\n")
print tn.read_all()
我的问题似乎在于“read_until”函数。当我运行上述脚本时,它会挂起,直到键盘中断,此时我收到以下消息:
CTraceback (most recent call last):
File "./telnetMR.py", line 11, in <module>
tn.read_until("Escape character is \'^]\'.")
File "/usr/lib64/python2.7/telnetlib.py", line 294, in read_until
return self._read_until_with_poll(match, timeout)
File "/usr/lib64/python2.7/telnetlib.py", line 318, in _read_until_with_poll
else 1000 * call_timeout)
我假设“read_until()”没有收到任何东西,因此一直等到超时,但我不明白为什么。
(我已经使用“expect”编写了同样的脚本,它工作得很好,但我想看看我是否可以让它在 python 中工作以提高效率......所以任何关于发送八进制字符串的 cmets 都值得赞赏,但那是不是这个问题的目的)。
谢谢。
【问题讨论】: