есть прога которая выводит инфу на экран и постоянно запущена.
нужно чтобы с помощью телнета по сети можно было прочитать эту информацию.
вывод в лог файл запрещён.
с помощью inetd не получается, т.к. он запускает прогу в момент присоединения.
netcat тоже подходит — возможно только одно подключение.
есть какие-нибудь идеи?
Вариант №1: программа выводит прямо на экран, т.е. /dev/tty##. Тогда никак.
Вариант №2: программа выводит-таки в stdout/stderr, которые, поскольку программа запущена из консоли, приконнекчены к экрану (тому же /dev/tty##).
Тогда посередине можно вклиниться (при старте программы, конечно) и, помимо передачи информации далее, открыть сокет на сетевое соединение.
Здравствуйте, Dair, Вы писали:
D>Вариант №1: программа выводит прямо на экран, т.е. /dev/tty##. Тогда никак. D>Вариант №2: программа выводит-таки в stdout/stderr, которые, поскольку программа запущена из консоли, приконнекчены к экрану (тому же /dev/tty##).
D>Тогда посередине можно вклиниться (при старте программы, конечно) и, помимо передачи информации далее, открыть сокет на сетевое соединение.
нуда, наверно проще будет открыть сокет или использовать утилиту screen
Здравствуйте, lspci, Вы писали:
L>есть прога которая выводит инфу на экран и постоянно запущена. L>нужно чтобы с помощью телнета по сети можно было прочитать эту информацию. L>вывод в лог файл запрещён. L>с помощью inetd не получается, т.к. он запускает прогу в момент присоединения. L>netcat тоже подходит — возможно только одно подключение. L>есть какие-нибудь идеи? :)
Если "экран" — виртуальная консоль, то можно читать её содержимое напрямую (например, на линуксах через /dev/vcsa$N). Но если это что-то другое — пришедшее по ssh, или локальный xterm — метода нет, потому что полное состояние нигде локально не хранится. Если наблюдать с самого начала — можно отрисовывать передаваемое на том же типе терминала ($TERM), но вклиниться посредине даёт сильный шанс что-то упустить.
A>Ну я влезу опять со своими любимыми пайпами A>man mkfifo A>и перенаправляем\дублируем поток в пайп A>а там уже с новой консоли банально читаем с пайпа
Пайп — это прекрасно, но
1. Читающая сторона должна быть всегда
2. Если читающая сторона отключится, получим SIGPIPE.
Здравствуйте, Dair, Вы писали:
A>>Ну я влезу опять со своими любимыми пайпами A>>man mkfifo A>>и перенаправляем\дублируем поток в пайп A>>а там уже с новой консоли банально читаем с пайпа
D>Пайп — это прекрасно, но D>1. Читающая сторона должна быть всегда D>2. Если читающая сторона отключится, получим SIGPIPE.
Ну и что? Большая проблема отключить SIGPIPE, если это нужно, и обработать ошибку самому?