автоматически запускать netcat на localhost и remote-host и поддерживать его активным

1072
fooness

Я нашел этот ответ @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.

0

1 ответ на вопрос

0
fooness

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