So verwenden Sie SSH-Pipes unter Linux

So verwenden Sie SSH-Pipes unter Linux
Ein Foto eines Mannes, der vor seinem Computer arbeitet.

UNIX-Pipes sind ein monumentaler Schritt in der Entwicklung von UNIX und UNIX-ähnlichen Betriebssystemen. Es ermöglichte Benutzern die Ausführung komplexer Rechenaufgaben durch die Verknüpfung der Eingabe und Ausgabe grundlegender Programme. Dieser Artikel erweitert dies, indem er Ihnen zeigt, wie Sie eine UNIX-Pipe unter Linux über ein Netzwerk mit dem SSH-Protokoll verwenden.

Die Unix-Pipeline verstehen

Pipes unter Unix (und damit auch Linux) werden verwendet, um Programme miteinander zu verketten und dafür zu sorgen, dass sie zusammenarbeiten. Mit cat können Sie beispielsweise den Inhalt einer Datei anzeigen, aber wenn Sie eine Pipe (|) verwenden, können Sie < verketten einen i=3>-Befehl zum -Befehl hinzufügen, um das Durchlesen der Datei zu erleichtern.catmore

Die Grundidee hier ist folgende: program1 fileX | program2. Es ist jedoch nicht nur auf eine Datei und zwei Programme beschränkt. Die Verrohrung kann mit so vielen Modifikatoren, wie Sie sich vorstellen können, so weit fortgeschritten sein, wie Sie es benötigen.

Hier sind einige Möglichkeiten, Pipe (|) in SSH-Situationen sinnvoll zu nutzen.

Komprimierte Verzeichnisse automatisch übertragen

Eine der häufigsten Arten der Verwendung von UNIX-Pipes besteht darin, die Ausgabe eines Programms in einer Datei irgendwo im lokalen System zu speichern. Wenn Sie beispielsweise echo "Hello, MakeTechEasier!"| tee Hello ausführen, wird das Programm echo ausgeführt und gleichzeitig die Zeichenfolge „Hello, MakeTechEasier!“ gespeichert. in der Datei „Hallo.“

Ein Terminal, das eine grundlegende UNIX-Pipe-Umleitung auf einem lokalen Computer zeigt.

Dennoch können Sie diese Idee nutzen, um Verzeichnisse zwischen zwei Linux-Hosts zu übertragen. Lesen Sie dazu den Ordner, den Sie senden möchten, mit tar und leiten Sie ihn dann an Ihren SSH-Daemon weiter:

Dieser Befehl bündelt Ihren Ordner in einem TAR-Archiv und sendet es an die Standardausgabe des Befehls. Die UNIX-Pipe liest diese Daten dann und sendet sie über SSH an Ihren Remote-Linux-Host.

Sie können diesen Befehl auch umkehren, um Ihre Dateien von Remote-Hosts abzurufen:

Dateien von Remote-Hosts übertragen und abrufen

Sie können auch Pipes und SSH verwenden, um einzelne Dateien über das Netzwerk zu senden. Dies funktioniert durch die Verwendung von cat als Möglichkeit, den Inhalt einer Datei zu laden und über SSH zu senden:

Der Remote-Host empfängt den Ausgabestream vom lokalen Cat-Prozess und rekonstruiert die Datei unverändert.

Um eine Datei von einem Remote-Host abzurufen, müssen Sie die Reihenfolge des Befehls umkehren und den Pfad für Ihre Remote-Datei angeben:

Ein Terminal, das die Übertragung einzelner Dateien über eine SSH-Pipe unter Linux zeigt.

Sichern und Wiederherstellen von Laufwerken aus der Ferne

Ähnlich wie beim Senden von Dateien und Verzeichnissen ist es unter Linux möglich, ganze Laufwerke remote mit einer UNIX-Pipe und SSH zu sichern. Dies kann nützlich sein, wenn Sie schnelle Offsite-Backups erstellen möchten und im Moment kein physisches Ersatzlaufwerk haben.

Um ein gesamtes Laufwerk zu sichern, führen Sie dd aus, wobei die Variable „if=“ auf das Laufwerk eingestellt ist, das Sie sichern möchten, und leiten Sie es dann an Ihren SSH-Daemon weiter:

Wenn Sie diesen Befehl umkehren, können Sie auch ein Festplatten-Image von einem Remote-Computer auf einer physischen Festplatte wiederherstellen:

Darüber hinaus funktioniert diese SSH-Pipe-Syntax auch mit diskreten Festplattenpartitionen. Wenn Ihr System beispielsweise über eine /home-Partition in „/dev/sda4“ verfügt, können Sie den folgenden Befehl ausführen, um ein Backup davon zu erstellen:

Umleiten der Audioeingabe an einen Remote-Computer

Einer der Vorteile von SSH-Pipes besteht darin, dass Sie mit Remote-Computern interagieren können, als wären diese eine lokale Ressource. Dazu gehört die Möglichkeit, auf Gerätedateien wie den Audioeingang eines Systems zuzugreifen.

Führen Sie dazu eine Remote-ALSA-Subshell mit SSH aus und senden Sie deren Ausgabe an Ihren lokalen ALSA-Daemon:

Dadurch wird das Standard-Audioeingabegerät auf dem Remote-Computer abgehört und das, was es hört, auf Ihrem System abgespielt. Wenn Sie die Befehle jedoch umdrehen, wird der Audioeingang Ihres lokalen Computers an den Audioausgang Ihres Remote-Hosts gesendet:

Ein Terminal, das einen aktiven Audiostream über SSH-Pipes anzeigt.

Die ALSA SSH-Pipe funktioniert auch, wenn Sie sie mit anderen Audiowiedergabetools kombinieren. Sie können beispielsweise die Arecord-Ausgabe von einer SSH-Pipe an ffmpeg senden:

Live-Video von einer Remote-Webcam streamen

Eine weitere großartige Verwendung von SSH-Pipes unter Linux ist das Streamen von Live-Video-Webcam-Feeds. Genau wie bei Audio können Sie hierdurch das Gerät eines Remote-Hosts nutzen und dessen Ausgabe auf Ihrem lokalen Computer rendern.

Um von der Webcam eines Remote-Hosts zu streamen, führen Sie SSH mit einer ffmpeg-Subshell aus und leiten Sie es dann an einen Videowiedergabe-Client auf Ihrem lokalen Computer weiter:

Dieser Befehl streamt die Rohvideoausgabe von der ersten Webcam auf Ihrem Remote-Computer.

Ein Screenshot, der einen aktiven Webcam-Video-Feed zeigt, der über eine SSH-Pipe unter Linux läuft.

Es ist auch möglich, das Filmmaterial Ihrer Remote-Webcam in einer separaten Datei aufzuzeichnen. Sie können dies tun, indem Sie die Daten von der SSH-Pipe an tee senden, bevor Sie sie an Ihren Videoplayer umleiten:

Neben Audio und Video können Sie auch SSH-Pipes verwenden, um Rohtext auf dem TTY eines Remote-Computers zu senden. Dies ist hilfreich, wenn Sie Statusmeldungen an ein System ohne GUI senden möchten.

Erstellen Sie zunächst eine FIFO-Pipe auf Ihrem lokalen Computer:

Führen Sie einen Überwachungsbefehl tail mit Ihrem FIFO aus und senden Sie seine Ausgabe an einen SSH-Daemon:

Testen Sie, ob Ihre neue FIFO-Pipe über das Netzwerk funktioniert, indem Sie Textdaten mit dem Echo-Befehl senden:

Ein Terminal, das beliebigen Text in der TTY-Konsole einer Maschine anzeigt.

Remote-Daten an eine lokale Zwischenablage weiterleiten

Der größte Nachteil einer Systemzwischenablage besteht darin, dass sie nur mit dem lokalen Computer funktioniert. Dies ist ein Problem, wenn Sie mit mehreren Computern arbeiten und Daten übertragen möchten, ohne temporäre Dateien zu erstellen.

Eine Möglichkeit, dies zu beheben, besteht darin, eine SSH-Pipe zu erstellen, die eine Remote-Datei lesen und direkt an die Zwischenablage Ihres lokalen Systems senden kann:

Dieser Befehl stellt eine Verbindung zu Ihrem Remote-Computer her, führt das Dienstprogramm cat aus und beginnt dann mit dem Lesen der Datei „ramces.txt“. Sobald dies erledigt ist, werden die Remote-Daten an Ihren lokalen Computer zurückgesendet und in die Zwischenablage Ihres Systems umgeleitet.

Ein Terminal, das die Zwischenablage des lokalen Computers nach einer SSH-Pipe anzeigt.

Sie können die aktuelle Zwischenablage Ihres Systems auch als Datei auf Ihren Remote-Computer übertragen, indem Sie den folgenden Befehl verwenden:

Das Erlernen des Sendens von Daten über ein Netzwerk mithilfe von UNIX-Pipes und SSH ist nur der erste Schritt zum Verständnis der Funktionsweise von Computernetzwerken. Erfahren Sie mehr über Ihr Netzwerk, indem Sie mit Traceroute verfolgen, wohin Ihre Pakete gehen.

Bildnachweis: Mikhail Fesenko über Unsplash. Alle Änderungen und Screenshots von Ramces Red.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert