Автоматически запускать netcat на localhost и remote-host и поддерживать его активным
Я нашел этот ответ @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 ответ
На сервере, который всегда подключен, используйте это в 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% производительности моего процессора.