print tn.read_all()不返回telnetlib python脚本中的任何内容

时间:2016-02-18 21:06:08

标签: python cisco telnetlib

我正在尝试远程登录到cisco ios-xr路由器并收集命令输出。

我已经测试过以下代码成功连接到路由器并执行命令,但似乎print tn.read_all()tn.read_very_eager()都不起作用。他们不打印任何东西。我在这里遗漏了什么明显的东西吗?

#!/usr/bin/env python
import sys
import telnetlib
import time 

HOST = "10.62.53.34"
PORT = "17006"
user = "cisco"
password = "cisco"

tn = telnetlib.Telnet(HOST,PORT)
print "Telnetting to", HOST, "@",PORT
tn.write("\n")
tn.write(user + "\n")
tn.write(password + "\n")
#print("I am in")
tn.write("show runn\n")
tn.write("exit \n")
print tn.read_all()
tn.close()

1 个答案:

答案 0 :(得分:0)

虽然这个问题是从2月开始的,但我会发布一个潜在的未来Google搜索者的答案。

当我意识到这一点时,我解决了类似的问题:

$users = $this->Posts->Users->get(1, [
    'contain' => ['Following.Posts']
]);

...在python 2中有效(参见https://docs.python.org/2/library/telnetlib.html底部的示例),但在python 3(https://docs.python.org/3.6/library/telnetlib.html)中没有。

对于python 3,正确的语法是:

print tn.read_all()