0

我正在使用 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

我以前在 Cisco 和 Nortel 上遇到过这个问题,但我可以通过 Cisco 上的“terminal lenght 0”命令和 Nortel 上的类似命令来克服它。我尝试在 Juniper 上使用等效命令(设置 cli screen-length),但仍然遇到相同的错误。我需要知道这个错误的含义是什么,它的原因是什么,以及如何克服它。

此致,

4

4 回答 4

0

错误信息

buf = self.sock.recv(50)
timeout: timed out

很明显。

无论出于何种原因,您的连接超时。

中间的某些防火墙或网络组件由于一段时间后不活动而关闭了连接,或者远程服务在合理的时间内没有响应。

于 2011-04-03T08:13:47.367 回答
0

我有同样的问题。

命令更改“TNT.read_all()”->“TNT.read_some()”和脚本重试。

于 2012-11-09T22:00:37.480 回答
0

这对我来说效果很好。

tn.read_very_eager()

请记住,在此之前我们需要提供足够的睡眠时间,以便在阅读之前将其记录下来。

于 2016-03-07T16:13:55.970 回答
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'))
于 2020-06-07T05:52:55.087 回答