我正在通过Python3远程连接到Cisco路由器。但是,它在运行脚本后挂断(但是我可以从linuxbash远程登录到路由器)。请参阅下面我的脚本和输出片段。在
import getpass
import telnetlib
HOST = "10.10.32.3"
user = input("Enter your telnet username: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until(b"Username: ")
tn.write(user.encode('ascii') + b"\n")
if password:
tn.read_until(b"Password: ")
tn.write(password.encode('ascii') + b"\n")
tn.write(b"conf t\n")
tn.write(b"int l0\n")
print(tn.read_all().decode('ascii'))
这是路由器上debug telnet
的输出
以及show tcp brief
的输出
Router#sho tcp brief
TCB Local Address Foreign Address (state)
10C90CE0 10.10.32.3.23 192.168.122.61.51466 ESTAB
我可以创建环回接口,但是我的linuxbash没有显示telnet输出。请据此指导。谢谢您。在
在Telnet.read_全部():在EOF之前读取所有数据;阻止直到连接关闭。 因此,您必须使用exit命令来指示它是文件结束。 你的代码应该像
telnetlib中的
.read_all()
被记录为“在EOF之前读取所有数据;在连接关闭之前阻塞。”。由于您没有做任何会导致连接关闭的操作,因此挂起正是您应该期望在这里发生的事情。尝试先向路由器发送退出命令。或者,如果要根据读取的结果发出进一步的命令,请使用.read_until()
(可能指定了超时)。在相关问题 更多 >
编程相关推荐