GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Beispiel für die Verwendung benannter Pipes in Linux Bash

Eines der besten Beispiele für den praktischen Einsatz einer Named Pipe...

Von http://en.wikipedia.org/wiki/Netcat:

Ein weiteres nützliches Verhalten ist die Verwendung von netcat als Stellvertreter. Sowohl Ports als auch Hosts können umgeleitet werden. Sehen Sie sich dieses Beispiel an:

nc -l 12345 | nc www.google.com 80

Port 12345 stellt die Anfrage dar.

Dies startet eine nc Server auf Port 12345 und alle Verbindungen werden auf google.com:80 umgeleitet . Wenn ein Webbrowser eine Anfrage an nc stellt , wird die Anfrage an Google gesendet, aber die Antwort wird nicht an den Webbrowser gesendet. Das liegt daran, dass Rohre unidirektional sind. Dies kann mit einer benannten Pipe umgangen werden, um die Ein- und Ausgabe umzuleiten.

mkfifo backpipe
nc -l 12345  0<backpipe | nc www.google.com 80 1>backpipe

Hier sind die Befehle:

$ mkfifo named_pipe

$ echo "Hi" > named_pipe &

$ cat named_pipe

Der erste Befehl erstellt die Pipe.

Der zweite Befehl schreibt in die Pipe (blocking). Die & setzt dies in den Hintergrund, sodass Sie weiterhin Befehle in derselben Shell eingeben können. Es wird beendet, wenn der FIFO durch den nächsten Befehl geleert wird.

Der letzte Befehl liest aus der Pipe.


Öffnen Sie zwei verschiedene Schalen und lassen Sie sie nebeneinander. Gehen Sie in beiden zu /tmp/ Verzeichnis:

cd /tmp/

Geben Sie im ersten ein:

mkfifo myPipe
echo "IPC_example_between_two_shells">myPipe

Geben Sie im zweiten ein:

while read line; do echo "What has been passed through the pipe is ${line}"; done<myPipe

Die erste Shell gibt Ihnen keine Eingabeaufforderung zurück, bis Sie den zweiten Teil des Codes in der zweiten Shell ausführen. Das liegt daran, dass das Fifo-Lesen und -Schreiben blockiert.

Sie können sich auch den FIFO-Typ ansehen, indem Sie ls -al myPipe ausführen und sehen Sie sich die Details dieses speziellen Dateityps an.

Der nächste Schritt wäre, den Code in ein Skript einzufügen!


Linux
  1. Debuggen Sie Linux mit ProcDump

  2. Kommunikation zwischen Prozessen in Linux:Verwendung von Pipes und Nachrichtenwarteschlangen

  3. Alle Ausgaben mit Bash unter Linux in eine Datei umleiten?

  4. Wie überprüfe ich den Internetzugang mit Bash-Skript in Linux?

  5. Warum verliere ich anscheinend Daten, wenn ich diese Bash-Pipe-Konstruktion verwende?

Eine Einführung in Pipes und Named Pipes in Linux

Verlaufsbefehl in Linux (Bash-Verlauf)

Linux mkfifo Command Tutorial für Anfänger (mit Beispielen)

Verwenden des Watch-Befehls unter Linux

Verwenden des Linux-Dirname-Befehls in Bash-Skripten

Was sind Pipes unter Linux? Wie funktioniert die Pipe-Umleitung?