telnetlib и ошибка "buf = self.sock.recv (50)" - PullRequest
0 голосов
/ 03 апреля 2011

Я использую 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, но ямог бы преодолеть это с помощью команды "Terminal длина 0" на Cisco и аналогичной команды на Nortel.Я попытался использовать эквивалентную команду на Juniper (установить длину экрана cli), но я все еще получаю ту же ошибку.Мне нужно знать, что означает эта ошибка и в чем ее причина, и как ее преодолеть.

С наилучшими пожеланиями,

Ответы [ 3 ]

0 голосов
/ 10 ноября 2012

У меня была такая же проблема.

Команда для изменения "TNT.read_all ()" -> "TNT.read_some ()" и сценарий для повторной попытки.

0 голосов
/ 07 марта 2016

tn.read_very_eager ()

работал очень хорошо для меня.Помните, что перед этим нужно дать достаточно времени для сна, чтобы оно было записано перед чтением

0 голосов
/ 03 апреля 2011

Сообщение об ошибке

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

довольно очевидно.

Время соединения истекло по любой причине.

Либо какой-то межсетевой экран или сетевой компонент между ними закрыл соединение из-за неактивности через некоторое время, либо удаленная служба не ответила в течение разумного времени.

...