Вопрос

Я пытаюсь автоматизировать некоторые действия Telnet с Python3. Поэтому я начал использовать сборку в Telnetlib (не PEXPECT).

На самом деле все работает, но я не понимаю, полностью понимаю, как Read_until работает - на самом деле документация говорит, что вы можете установить тайм-аут, и если строка поиска не найден, время ожидания отправляет обратно пустое значение байта или или если есть другое значение тот, который можно сохранить как возвращаемое значение!

Имеет ли это смысл ?!

Если я хочу Read_until определенную ценность - как узнать, что это значение было действительно одной функцией чтения. Также я не мог узнать, как проверить, ударил ли время ожидания.

Мой обходной путь сейчас:

output = telnet.read_until(str.encode(hostname), 3)
if re.search(hostname, bytes.decode(output), re.IGNORECASE):
   #do something when the output matches the searchstring
else:
   #stop the function

Но это не имеет никакого смысла для меня, поэтому, возможно, вы теперь лучшее решение

Это было полезно?

Решение

Да, если ваше имя хоста example.com, Read_until вернется что-то вроде weijwrgnerg hgqwv blather example.com. Отказ За исключением случаев, если он не нашел имя хоста через три секунды, он просто выплюнет все, что он получил к тому времени: weijwrgnerg hg.

Так что я думаю, что вы делаете это почти правильно. Вы, вероятно, хотите re.escape Ваше имя хоста, в противном случае он будет интерпретировать его как регеек. Кроме того, вы могли бы просто использовать Python's .endswith(). Отказ И вы можете сделать output.decode() чтобы получить строку (а не bytes.decode(output)).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top