Найти - Пользователи
Полная версия: Отслеживание строки в telnet-сессии.
Начало » Python для новичков » Отслеживание строки в telnet-сессии.
1
Wonderg
Добрый вечер, господа. Я новичок в Python'е в частности и в программировании вообще, поэтому прошу помочь, даже если мой вопрос будет глупым

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

import telnetlib, sys
host = '192.168.1.1'
telnet (host)
def telnet(h):    
    print ('Enter User Name:')
    user = input()    
    print ('Enter Password')
    password = input()    
    
    tel=telnetlib.Telnet(h,23,2)
    tel.set_debuglevel(10)
    tel.read_until(b"Name\r\n>",2)    
    write(user.encode('ascii')+b"\r\n")
    read_until(b"Password\r\n>",2)
    write(password.encode('ascii')+b"\r\n")    
    
    after_logging=tel.read_eager()
    
    var1=str.encode('Condition 1')    
    var2=str.encode('Condition 2')  
    
    if after_logging.find(another_user_logged_in) is True:        
        print('Something in first condition')        
        tel.close
    elif after_logging.find(another_user_logged_in) is True:
        print('Something in second condition')        
        tel.close
    else:
        print('Something wrong')

Совершенно очевидно, что ошибка скрыта в моём понимании if else цикла и .find команды. Уважаемые, прошу подсказать, как всё же правильно отслеживать то, что выводится в консоль?
Budulianin
Wonderg
Подобный код работать отказывается:
Что Python пишет ?
Wonderg
Фактически он всегда выдаёт:
“Something wrong”
Когда реально, должно быть “Something in first condition”, к примеру. Т.е. цикл не срабатывает, не происходит поиска заданной строки в выводе, а как это верно реализовать пока понять не могу.
Budulianin
Wonderg
Когда реально, должно быть “Something in first condition”, к примеру.

С чего бы это вдруг?

в after_logging string

знаешь, что оператор is делает? Прочитай

А потом посмотри, что возвращает after_logging.find
JOHN_16
Wonderg
потому что вам нужно читать документацию,а не понимать команды по их названиям. Загляните в доки и увидите, что метод строки find() ищет в строке другую строку, и возвращает ее позицию. Естественно в вашем коде ничего работать не нужно потому чт овы не просто сравниваете с True, а еще используете оператор is, который проверяет на идентичность, а integer is True никогда не будет верным.

В вашем случае достаточно просто проверить появляется ли данная строка в другой:

if another_user_logged_in in after_logging:
Wonderg
Я предполагал, что в корне не прав, но не думал что на столько. Благодарю за помощь!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB