GNU/Linux >> Tutoriels Linux >  >> Linux

Exemple d'utilisation de canaux nommés dans Linux Bash

Un des meilleurs exemples d'utilisation pratique d'un tube nommé...

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

Un autre comportement utile consiste à utiliser netcat en tant que mandataire. Les ports et les hôtes peuvent être redirigés. Regardez cet exemple :

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

Le port 12345 représente la requête.

Cela démarre un nc serveur sur le port 12345 et toutes les connexions sont redirigées vers google.com:80 . Si un navigateur Web fait une demande à nc , la demande sera envoyée à google mais la réponse ne sera pas envoyée au navigateur Web. C'est parce que les tuyaux sont unidirectionnels. Cela peut être contourné avec un tube nommé pour rediriger l'entrée et la sortie.

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

Voici les commandes :

$ mkfifo named_pipe

$ echo "Hi" > named_pipe &

$ cat named_pipe

La première commande crée le tuyau.

La deuxième commande écrit dans le tube (blocage). Le & met cela en arrière-plan afin que vous puissiez continuer à taper des commandes dans le même shell. Il sortira lorsque le FIFO sera vidé par la prochaine commande.

La dernière commande lit à partir du tube.


Ouvrez deux coques différentes et laissez-les côte à côte. Dans les deux, allez au /tmp/ répertoire :

cd /tmp/

Dans le premier type :

mkfifo myPipe
echo "IPC_example_between_two_shells">myPipe

Dans le second, tapez :

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

Le premier shell ne vous renverra aucune invite tant que vous n'aurez pas exécuté la deuxième partie du code dans le deuxième shell. C'est parce que la lecture et l'écriture fifo bloquent.

Vous pouvez également jeter un œil au type FIFO en faisant un ls -al myPipe et voir les détails de ce type de fichier spécifique.

La prochaine étape serait d'embarquer le code dans un script !


Linux
  1. Comment utiliser les canaux et les canaux nommés sous Linux (avec exemples)

  2. Analyser l'historique de Bash sous Linux

  3. Utilisation de modificateurs de mots avec l'historique Bash sous Linux

  4. Rediriger toutes les sorties vers un fichier à l'aide de Bash sous Linux ?

  5. Obtenir un masque de sous-réseau sous Linux à l'aide de bash

Une introduction aux canaux et aux canaux nommés sous Linux

Commande d'historique sous Linux (historique de bash)

Tutoriel de commande Linux mkfifo pour les débutants (avec exemples)

Utilisation de la commande Watch sous Linux

Utilisation de la commande Linux Dirname dans les scripts Bash

Que sont les tuyaux sous Linux ? Comment fonctionne la redirection de tuyau ?