import getpass
import telnetlib
HOST = “localhost”
user = input(“Enter your remote account: ”)
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until(b“login: ”)
tn.write(user.encode('ascii') + b“\n”)
if password:
tn.read_until(b“Password: ”)
tn.write(password.encode('ascii') + b“\n”)
tn.write(b“ls\n”)
tn.write(b“exit\n”)
print(tn.read_all().decode('ascii'))
это пример из tutorial официального сайта
python.org и в этом примере тоже tn.read_all вынесен за пределы telnet-соединения… есть ли возможность прочесть результаты внутри (не выполняя дисконнект) ? допусти так :
import getpass
import telnetlib
HOST = “localhost”
user = input(“Enter your remote account: ”)
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until(b“login: ”)
tn.write(user.encode('ascii') + b“\n”)
if password:
tn.read_until(b“Password: ”)
tn.write(password.encode('ascii') + b“\n”)
tn.write(b“ls\n”)
print(tn.read_all().decode('ascii'))
tn.write(b“exit\n”)
или какой-то другой способ прочесть все данные (в данном примере выполнения команды ls), кроме функции read_all ?
from telnetlib import Telnet
from re import findall
HOST2 = “10.0.0.25”
tn2 = Telnet(HOST2)
tn2.read_until(b“login: ”)
tn2.write(b'ddd' + b“\n”)
tn2.read_until(b“Password: ”)
tn2.write(b'nnn' + b“\n”)
tn2.read_until(b“->”)
cell = 0
while cell != b'exit':
number = input ('Enter number: ‘)
cell = number.encode()
if cell in range(1,501):
tn2.write (b’cat files1 | grep cell“' + cell + b'|”' + b“\n”)
s = (tn.read_all().decode('latin-1'))
в этом месте прога почему-то виснет…

- как решить эту проблему ???