Ich verwende ein Raspberry und brauche zwei lokale Streams. Folgendes habe ich versucht:
Versuchen
raspivid <some options> -o - | tee nc localhost 5100 | nc localhost 5000
Frage
Ich kann die Ausgabe am empfangen, 5000
aber nicht am 5100
. Was übersehe ich?
raspivid -o -
gibt den Stream an die Standardausgabe aus.
Antwort1
Nun, 'tee' akzeptiert keine Befehlsnamen – es akzeptiertDateiNamen. Sie schreiben Kopien der Ausgabe in Dateien mit den Namen nc
, localhost
, und 5100
im aktuellen Verzeichnis.
Wenn Sie zwei Befehle ausführen möchten, prüfen Sie, ob Ihre Shell eine „Prozesssubstitution“ mit zulässt >( ... )
, wobei automatisch eine Pipe als Dateiname übergeben wird:
raspivid <etc> | tee >(nc localhost 5100) | nc localhost 5000
Alternativ installieren Sie pee
vonmehrutils:
raspivid <etc> | pee "nc localhost 5100" | nc localhost 5000
Wenn keine dieser Optionen verfügbar ist, verwenden Sie mkfifo
zum Erstellen einesgenanntPipe für eine der „nc“-Instanzen, dann führen Sie die Ausgabe und die Eingabe separat aus:
mkfifo /tmp/ncpipe
nc localhost 5100 < /tmp/ncpipe &
raspivid <etc> | tee /tmp/ncpipe | nc localhost 5000