【发布时间】:2015-05-04 20:50:09
【问题描述】:
网络人在这里玩编码
我有一个非常基本的脚本,可以远程登录到交换机/路由器,运行一些命令并终止。一切都在端口 23 上完成。我遇到的问题是,当我通过非标准端口通过术语服务器或 ESXi 主机上的虚拟路由器(csr1000v)连接到设备时,我没有得到提示,我无法运行命令。
在 SecureCRT 中,我可以毫无问题地连接到它们,但在出现提示之前我必须按 Enter。在普通交换机/路由器中,提示会立即出现。 建立连接后,我尝试放入 telnet.write(b" \r\n") ,但没有任何区别。
我还设置了,如果我通过 SecureCRT 调出提示,断开连接然后运行脚本,它就会成功执行。 我已经阅读了 telnetlib 文档,但没有任何看起来有帮助的内容
telnet = telnetlib.Telnet(HOST,port)
#telnet.write(b" \r\n")
telnet.read_until(b"Username: ")
telnet.write(user.encode('ascii'))
telnet.read_until(b"Password: ")
telnet.write(password.encode('ascii'))
telnet.read_until(b">")
telnet.write(b"enable\r\n")
telnet.read_until(b"Password: ")
telnet.write(enable_password.encode('ascii'))
telnet.read_until(b"#")
telnet.write(b"term length 0\r\n")
telnet.read_until(b"#")
response = send_command(telnet,"sh run")
print (response)
response = send_command(telnet," sh ip int br | ex una")
print (response)
【问题讨论】:
-
不知道是不是串口没有瞬间就绪。在连接后立即尝试
time.sleep(1)和telnet.write(b'\r\n')。
标签: python terminal console virtual-machine telnet