Starten Sie netcat automatisch auf localhost und remote-host und lassen Sie es aktiv

1069
fooness

Ich habe diese Antwort von @jeremytrimble auf Stack Overflow gefunden. Dort wird erläutert, wie Sie eine FIFO-Datei über das Netzwerk lesen können.

Ich frage mich, ob es möglich ist, diese netcat-Befehle automatisch zu starten, z. B. in einer Crontab-Datei (@reboot nc…). Wie würde ich sie am Leben erhalten oder nach dem Tod neu starten lassen?

Host1$ mkfifo Host1_named_pipe Host1$ nc -l 1234 > Host1_named_pipe  Host2$ mkfifo Host2_named_pipe Host2$ nc Host1 1234 < Host2_named_pipe 

Wenn Sie nun ein Programm auf Host2 ausführen und seine Ausgabe an Host2_named_pipe senden, wird diese Ausgabe von Host1_named_pipe auf Host1 ausgegeben.

0

1 Antwort auf die Frage

0
fooness

Verwenden Sie auf dem Server, der immer verbunden ist, dies in einer crontab:

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

Auf dem Client, der nicht immer im Netzwerk oder eingeschaltet ist, verwenden Sie diesen Befehl:

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

Der Server wartet immer auf eine Verbindung am angegebenen Port (dank des Parameters -k). Der Client stellt nur eine Verbindung zum Server her, wenn dies erforderlich ist.

Ich verwende dies für MPD und seinen FIFO-Visualizer. MPD wird auf einem Remote-Host ausgeführt, aber mein MPD-Client wird lokal ausgeführt (ich verwende ncmpcpp).

Dies ist der wichtige Teil der ncmpcpp-Konfiguration auf dem lokalen Host:

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

Dies ist der wichtige Teil der mpd config auf dem Remote-Server:

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

Die Ausführung des Befehls 'nc' auf meinem lokalen Computer scheint sehr viele Ressourcen zu benötigen… ~ 100% meiner CPU-Leistung.