поймать вывод из linux telnet в скрипт Python - PullRequest
1 голос
/ 13 мая 2010

Моя проблема в том, что я хочу сделать что-то подобное в консоли Linux

telnet 192.168.255.28> process.py Т.е. я хотел бы сделать некоторые преобразования с выводом консоли telnet с использованием скрипта Python. Я вижу Popen в Python для этого случая, но я не могу понять, как я могу получить ввод из Telnet, если он не останавливается все время .. Радует любые идеи.

Ответы [ 3 ]

3 голосов
/ 13 мая 2010

Рассматривали ли вы telnetlib ? Похоже, что именно то, что вы ищете?

2 голосов
/ 13 мая 2010

Если вы можете адаптировать свое решение, telnetlib кажется правильным способом сделать это - +1 к xitrium.

Тем не менее, если вы настроены на передачу вывода telnet в ваш скрипт на Python, он будет входить в стандартный вход. Это означает, что вы можете сделать что-то вроде этого:

try:
    while True:
        line = raw_input()
        do_stuff(line)
except EOFError:
    pass    # the telnet process finished; there's no more input

, который будет получать выходные данные из telnet, по одной строке за раз. Если вам нужно более точное управление, вы можете получить ввод, используя sys.stdin.read().

Важно: В своем вопросе вы сказали (например) telnet 192.168.255.28 > process.py. Это не верно; вместо передачи вывода из telnet в ваш скрипт, он сохранит вывод в файл, перезаписав ваш скрипт. То, что вы хотите, это труба: telnet 192.168.255.28 | process.py.

1 голос
/ 13 мая 2010

Как упоминалось в xitrium, было бы лучше, если бы вы использовали telnetlib. Вы можете обойтись без всего перенаправления оболочки и т. Д.

Если вы делаете что-то вроде telnet foo | process.py, вы можете прочитать ваши программы stdin (sys.stdin), чтобы получить выходные данные программы telnet. Когда вы счастливы, вы можете выйти и прекратить конвейер. subprocess.Popen будет использоваться, если вы пытаетесь открыть программу telnet как подпроцесс интерпретатора. Я не уверен, что ты этого хотел.

В любом случае, telnetlib - верный путь. Если вам просто нужен выходной текстовый процессор, рассмотрите perl. Это сильные стороны в этом направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...