Уведомления

Группа в Telegram: @pythonsu

#1 Март 12, 2013 02:11:59

MarkHammer
Зарегистрирован: 2013-02-24
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по работе по telnet-соединению

Подскажите пожалуйста - захожу телнетом на CLI, получаю приглашение на ввод команд, ввожу команды, но чтобы получить результат выполнения - мне получается надо отконнектиться от устройства…, а потом соотвественно снова коннектиться, чтобы продолжить…

результаты получаю при помощи :
ddd = (tn.read_all().decode('latin-1'))
rez = str(re.findall (r'82(+)',ddd))

что не так делаю ? почему нельзя считать результат в переменную ddd, находясь в удаленном терминале ?

пробовал также давать несколько команд, а затем отконнектился и считал результат в переменную
ddd = (tn.read_all().decode('latin-1'))
print (ddd) при этом выдал только результат последней команды… - может есть другие методы решения этой задачи ???



Отредактировано MarkHammer (Март 12, 2013 05:00:08)

Офлайн

#2 Март 22, 2013 22:21:31

MarkHammer
Зарегистрирован: 2013-02-24
Сообщения: 97
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос по работе по 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”)
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'))

в этом месте прога почему-то виснет… - как решить эту проблему ???

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version