Q:

timeout Telnet'а

Добрый день! Пишу скрипт для проведения махинаций с роутером через telnet.
Использую следующий код:
import telnetlib
user = 'admin'
password = 'admin'
PROMPT = '>'
tn = telnetlib.Telnet(host = 'xx.xx.xx.xx', port = 23, timeout = 5)
print(tn.read_all())
tn.read_until(b'login: ')
tn.write(user + '\n')
if password:
   tn.read_until('Password: ')
   tn.write(password + '\n')
tn.read_until(PROMPT)
tn.write('ls\n')
print (tn.read_until(PROMPT))
tn.write('exit\n')

Однако, при запуске, через 5 секунд скрипт вылетает с ошибкой
Traceback (most recent call last):
  File "C:/Users/vladF/PycharmProjects/untitled/testtelnet", line 6, in <module>
    print(tn.read_all())
  File "C:\Users\vladF\AppData\Local\Programs\Python\Python35\lib\telnetlib.py", line 333, in read_all
    self.fill_rawq()
  File "C:\Users\vladF\AppData\Local\Programs\Python\Python35\lib\telnetlib.py", line 524, in fill_rawq
    buf = self.sock.recv(50)
socket.timeout: timed out

A:

import telnetlib
user = 'admin'
password = 'admin'
PROMPT = '>'
tn = telnetlib.Telnet(host = 'xx.xx.xx.xx', port = 23, timeout = 5)
tn.read_until(b'login: ')
tn.write(user + '\n')
tn.read_until('Password: ')
tn.write(password + '\n')
tn.read_until(PROMPT)
tn.write('ls\n')
print (tn.read_until(PROMPT))
tn.write('exit\n')

tn.read_all() не может быть вызван пока соединение не разорвано. tn.close() или tn.write(b'logout\r')

