我使用telnetlib将简单的telnet脚本用于Juniper交换机。以下是我的代码:
import telnetlib
HOST = raw_input("Enter host IP address: ")
USER = raw_input("Enter Username: ")
PWD = raw_input("Enter Password: ")
TNT = telnetlib.Telnet(HOST, 23, 10)
TNT.read_until("login:")
TNT.write(USER.encode('ascii') + "\n")
TNT.read_until("Password:")
TNT.write(PWD.encode('ascii') + "\n")
TNT.write("set cli screen-length 10000\nconfigure\nshow\nexit\n")
print (TNT.read_all().decode('ascii'))
TNT.close()
raw_input ("Press any Key to Quit: ")
每当我使用Juniper开关运行此程序时,它都会给我这个错误:
Traceback (most recent call last):
File "D:\Python\AuTel Project\Old versions and tials\Telnet (Python 2.7) V1.4.py", line 17, in <module>
print (TNT.read_all().decode('ascii'))
File "C:\Python27\lib\telnetlib.py", line 325, in read_all
self.fill_rawq()
File "C:\Python27\lib\telnetlib.py", line 516, in fill_rawq
buf = self.sock.recv(50)
timeout: timed out
我之前在思科和北电方面遇到过这个问题,但我可以通过思科的“终端长度0”命令和北电的类似命令来克服它。我试图在Juniper上使用等效命令(设置cli屏幕长度),但我仍然得到相同的错误。我需要知道这个错误的含义是什么,它的原因是什么,以及如何克服它。
最诚挚的问候,
答案 0 :(得分:0)
错误消息
buf = self.sock.recv(50)
timeout: timed out
非常明显。
您的连接因任何原因而超时。
其中一些防火墙或网络组件在一段时间后由于不活动而关闭连接,或者远程服务在合理的时间内没有响应。
答案 1 :(得分:0)
我遇到了同样的问题。
更改“TNT.read_all()”的命令 - &gt; “TNT.read_some()” 和脚本重试。
答案 2 :(得分:0)
tn.read_very_eager()
对我来说非常好。请记住,我们需要在此之前提供足够的睡眠时间,以便在阅读之前记录它
答案 3 :(得分:0)
尝试完全从终端退出,退出脚本后出现类似问题,错误消息。问题是,我正在启用模式,而不是从终端退出。一旦我添加Exit
作为退出telnet脚本的最后一个命令,它就起作用了。
输入ctr+c
^CTraceback (most recent call last):
File "./python_ex1_telnet_reading_file_1.py", line 44, in <module>
tn.write(b"exit\n")
File "/usr/lib/python3.8/telnetlib.py", line 335, in read_all
self.fill_rawq()
File "/usr/lib/python3.8/telnetlib.py", line 526, in fill_rawq
buf = self.sock.recv(50)
从脚本中删除:
tn.write(b"end\n")
tn.write(b"exit\n") -- This was missing
print(tn.read_all().decode('ascii'))