2015-08-26 2 views
0

У меня небольшая проблема в Python с Telnet. im, пытаясь запустить скрипт, определив, подключено ли telnet-соединение или нет. Мой код выглядит примерно следующим образом:Python Telnet if read = xxxx

if TLNT.read_until("login: ",2): #if it reads the login prompt: 
    login(USER,PASS) #runs the function used to login to the system 
main() #otherwise will determine system is already logged in and start the main script 

Проблема здесь я неуверен форматирование здесь, как скрипт будет пропускать через функцию входа, даже если я намеренно вышел из системы телнета, так что я знаю, что это видит приглашение для входа в систему. если запрос telnet оставлен на «login:», что будет read_until return?

+0

В чем проблема? – CasualDemon

+0

В чем вопрос? –

+0

Я только что обновил вопрос, чтобы предоставить дополнительную информацию – bladexeon

ответ

1

Ответ в documentation!

Telnet.read_until (ожидается [, таймаут])

чтения до заданной строки, как ожидается, не встречается, или пока тайм-аут секунд прошло.

Если совпадение не найдено, верните то, что доступно, а, возможно, пустую строку. Поднимите EOFError, если соединение закрыто, и нет готовых данных.

Он не возвращается True или False, так что вы, вероятно, не хотите использовать возвращаемое значение как ваше условное выражение.

+0

Включает ли строка 'read_until' строку аргументов? Может быть, он может проверить на 'if 'login:' в TLNT.read_until ('login:', 2): login (USER, PASS)'. У меня нет сервера telnet для тестирования и у вас нет времени следить за вызовами функций в источнике (он в конечном итоге возвращает 'self.cookedq', но я не знаю, как это заселено) –

+0

Да, он включает в себя согласованный текст. >>> tn = telnetlib.Telnet ('...') >>> tn.read_until ("login:", 2) '\ r \ n \ r \ nSunOS 5.8 \ r \ n \ r \ r \ n \ rlogin: ' Это позволяет считывать все выходные данные до тех пор, пока не будет встречено приглашение, а затем обработает вывод. – dsh