Я нашел этот ответ @jeremytrimble в Stack Overflow, который объясняет, как вы можете читать FIFO-файл по сети.

Интересно, возможно ли запустить эти команды netcat автоматически, например, в файле crontab (@reboot nc…). Как мне сохранить их живыми или перезапустить их после того, как их убьют?

Host1$ mkfifo Host1_named_pipe
Host1$ nc -l 1234 > Host1_named_pipe

Host2$ mkfifo Host2_named_pipe
Host2$ nc Host1 1234 < Host2_named_pipe

Теперь, когда вы запускаете программу на Host2 и отправляете ее вывод на Host2_named_pipe, этот вывод будет выходить из Host1_named_pipe на Host1.

1 ответ1

0

На сервере, который всегда подключен, используйте это в crontab:

@reboot nc -k -l 1234 < /tmp/fifo.fifo

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

nc -d $IP_OF_SERVER 1234 > /tmp/fifo.fifo & $SOME_COMMAND

Сервер всегда прослушивает соединение через указанный порт (благодаря параметру -k), клиент просто подключается к серверу, когда это необходимо.

Я использую это для MPD и его визуализатора FIFO. MPD работает на удаленном хосте, но мой клиент MPD работает локально (я использую ncmpcpp).

Это важная часть конфигурации ncmpcpp на локальном хосте:

mpd_host = "$IP_OF_SERVER"
visualizer_fifo_path = "/tmp/fifo.fifo"

Это важная часть конфигурации mpd на удаленном сервере:

audio_output {
        […]
        path    "/tmp/fifo.fifo"
        […]
}

Запуск команды 'nc' на моем локальном компьютере, похоже, использует очень большое количество ресурсов… ~ 100% производительности моего процессора.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .