Python Telnetlib read_until - нулевой символ - PullRequest
0 голосов
/ 06 марта 2019

Я застрял с проблемой. Я использую библиотеку telnetlib в Python для подключения к системе, которая выводит системные ошибки. Система довольно старая и работает, устанавливая соединение и выдавая сигнал тревоги для любой проблемы.

Он начинается с вывода всех текущих аварийных сигналов при подключении. Затем он сохраняет соединение открытым и отправляет сообщение поддержания активности или сигнал тревоги.

Сигналы тревоги, которые отправляются, отправляются назад, разделенные нулевым символом. Я пытаюсь либо взять все данные, выведенные telnet, и передать их через функцию, но когда я пытаюсь использовать Telnet.read_all(), он просто сохраняет соединение открытым и не запускает остальную часть кода, пока не истечет время ожидания.

Или я пытаюсь заставить telnetlib читать по одной строке за раз и выполнять функцию, обрабатывающую по одной строке за раз, но когда я пытаюсь использовать Telnet.read_until(expected[, timeout]), он либо возвращает b'', либо делает то же самое, что и Telnet.read_all() и ждет до истечения времени ожидания.

Кто-нибудь знает, как я могу заставить его либо видеть нулевой байт, затем циклически проходить каждую инструкцию, либо извлекать блок данных из телнета, а затем использовать str.replace для его удаления?

...