Comment utiliser les tuyaux SSH sous Linux

Les tuyaux UNIX constituent une étape monumentale dans le développement des systèmes d'exploitation UNIX et de type UNIX. Il permettait aux utilisateurs d'effectuer des tâches informatiques complexes en reliant les entrées et les sorties de programmes de base. Cet article va plus loin en vous montrant comment utiliser un canal UNIX sous Linux sur un réseau avec le protocole SSH.

Conseil : Si vous avez besoin d'un rappel, découvrez comment canaliser et la redirection fonctionne sous Linux.

Comprendre le pipeline Unix

Les tuyaux sous Unix (et par extension, Linux) sont utilisés pour enchaîner les programmes et les faire fonctionner ensemble. Par exemple, en utilisant cat, vous pouvez afficher le contenu d'un fichier, mais si vous utilisez un tube (|), vous pouvez enchaîner le cat à la commande more pour rendre le fichier plus facile à lire.

cat file1 | plus

L'idée de base ici est la suivante : program1 fileX | programme2. Cependant, cela ne se limite pas à un fichier et à deux programmes. La tuyauterie peut devenir aussi avancée que nécessaire avec autant de modificateurs que vous pouvez imaginer.

Voici quelques façons de faire bon usage de la tuyauterie (|) dans Situations SSH.

En passant : découvrez quelques-unes des meilleures astuces pour sécuriser votre serveur SSH.

Transférer automatiquement les répertoires compressés

L'une des façons les plus courantes d'utiliser les canaux UNIX consiste à stocker la sortie d'un programme dans un fichier quelque part dans le système local. Par exemple, en exécutant echo "Hello, MakeTechEasier!" | tee Hello exécutera le programme echo tout en stockant également la chaîne « Hello, MakeTechEasier ! » à l'intérieur du fichier « Bonjour ».

Cela dit, vous pouvez utiliser cette idée pour transférer des répertoires sur deux hôtes Linux. Pour ce faire, lisez le dossier que vous souhaitez envoyer en utilisant tar, puis redirigez-le vers votre démon SSH :

tar czf - "~/Documents/myfolder" | ssh ramces@remote.host "tar xzf - -C ~/Documents/"

Cette commande regroupera votre dossier dans une archive tar et l'enverra à la sortie standard de la commande. Le canal UNIX lira ensuite ces données et les enverra à votre hôte Linux distant à l'aide de SSH.

Vous pouvez également inverser cette commande pour extraire vos fichiers des hôtes distants :

ssh ramces @remote.host "tar czf - ~/Documents/mondossier" | tar xzf - -C "~/Documents/"

Bon à savoir : découvrez comment créer des sauvegardes cloud chiffrées à l'aide de rclone.

Push et récupération Fichiers provenant d'hôtes distants

Vous pouvez également utiliser des canaux et SSH pour envoyer des fichiers individuels sur le réseau. Cela fonctionne en utilisant cat comme moyen de charger le contenu d'un fichier et de l'envoyer via SSH :

cat < mon.local.file | ssh ramces@remote.host "cat > my.remote.file"

L'hôte distant recevra le flux de sortie du processus cat local et reconstruira le fichier tel quel.

Pour récupérer un fichier depuis un hôte distant, vous devez inverser l'ordre de la commande et fournir le chemin de votre fichier distant :

ssh ramces@remote.host "cat < my.remote.file" | chat > my.local.file

Sauvegarde et restauration de lecteurs à distance

Semblable à l'envoi de fichiers et de répertoires, il est possible de sauvegarder des lecteurs entiers sous Linux à distance avec un canal UNIX et SSH. Cela peut être utile si vous souhaitez créer des sauvegardes rapides hors site et que vous ne disposez pas d'un disque physique de rechange pour le moment.

Pour sauvegarder un disque entier, exécutez dd avec son Variable « if = » définie sur le lecteur que vous souhaitez sauvegarder, puis redirigez-la vers votre démon SSH :

sudo dd if=/dev/sda | ssh ramces@remote.host "dd of=sda.img"

Inverser cette commande vous permet également de restaurer une image disque d'une machine distante vers un disque physique :

ssh ramces @remote.host "dd if=sda.img" | sudo dd of=/dev/sda

De plus, cette syntaxe de canal SSH fonctionnera également avec des partitions de disque discrètes. Par exemple, si votre système possède une partition /home dans « /dev/sda4 », vous pouvez exécuter la commande suivante pour en créer une sauvegarde :

sudo dd if=/dev/sda4 | ssh ramces@remote.host "dd of=home.img"

Pour information : apprenez-en plus sur l'historique et vous pouvez utiliser la commande dd pour créer des images disque.

Redirection de l'entrée audio vers une machine distante

L'un des avantages des canaux SSH est qu'ils vous permettent d'interagir avec des machines distantes comme s'il s'agissait d'une ressource locale. Cela inclut la possibilité d'accéder à des fichiers de périphérique tels que l'entrée audio d'un système.

Pour ce faire, exécutez un sous-shell ALSA distant à l'aide de SSH.et envoyez sa sortie à votre démon ALSA local :

ssh ramces@remote.host "arecord -f cd" | aplay

Cela écoutera le périphérique d'entrée audio par défaut sur la machine distante et jouera ce qu'il entend sur votre système. Cela dit, inverser les commandes enverra l'entrée audio de votre machine locale à la sortie audio de votre hôte distant :

arecord -f cd | ssh ramces@remote.host "aplay"

Le canal ALSA SSH fonctionnera également lorsque vous le combinerez avec d'autres outils de lecture audio. Par exemple, vous pouvez envoyer la sortie arecord d'un canal SSH à ffmpeg :

ssh ramces@remote.host "arecord -f cd" | ffplay -nodisp -

Diffusion de vidéo en direct à partir d'une webcam distante

Une autre utilisation intéressante des canaux SSH sous Linux consiste à diffuser des flux vidéo en direct par webcam. Tout comme avec l'audio, cela vous permet de tirer parti du périphérique d'un hôte distant et de restituer sa sortie sur votre machine locale.

Pour diffuser depuis la webcam d'un hôte distant, exécutez SSH avec un sous-shell ffmpeg, puis redirigez-le vers un client de lecture vidéo sur votre machine locale :

ssh ramces@remote.host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mpv --demuxer=mkv /dev/stdin

Cette commande diffusera la sortie vidéo brute de la première webcam sur votre machine distante.

Il est également possible d'enregistrer les images de votre webcam distante dans un fichier séparé. Vous pouvez le faire en envoyant les données du canal SSH vers tee avant de les rediriger vers votre lecteur vidéo :

ssh ramces@remote.host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev /video0 -f matroska -" | tee-shirt mon_recording.mkv | mpv --demuxer=mkv /dev/stdin

Impression de texte sur une console distante

Outre l'audio et la vidéo, vous pouvez également utiliser des canaux SSH pour envoyer du texte brut sur une machine distante. ATS. Ceci est utile si vous souhaitez envoyer des messages d'état à un système sans interface graphique.

Pour commencer, créez un canal FIFO sur votre machine locale :

mkfifo my-fifo

Exécutez une commande tail d'écoute avec votre FIFO et envoyez sa sortie à un démon SSH :

tail -f my-fifo | ssh root@remote.host "cat > /dev/tty0"

Testez si votre nouveau canal FIFO fonctionne sur le réseau en envoyant des données texte à l'aide de la commande echo :

echo "Bonjour, MakeTechEasier !" > my-fifo

Remarque : L'envoi de texte au téléscripteur de votre machine ne fonctionnera que si vous êtes connecté en tant que compte root de cette machine.

Transférer des données distantes vers un Presse-papiers local

Le plus gros inconvénient d'un presse-papiers système est qu'il ne fonctionne qu'avec la machine locale. C'est un problème si vous travaillez avec plusieurs ordinateurs et que vous souhaitez transférer des données sans créer de fichiers temporaires.

Une façon de résoudre ce problème consiste à créer un canal SSH capable de lire et d'envoyer directement un fichier distant. dans le presse-papiers de votre système local :

ssh ramces@remote.host "cat < ~/ramces.txt" | xclip -sel clipboard

Cette commande se connectera à votre machine distante, exécutera l'utilitaire cat puis commencera à lire le fichier « ramces.txt ». Une fois cela fait, il renverra les données distantes à votre machine locale et les redirigera vers le presse-papiers de votre système.

Vous pouvez également transférer le presse-papiers actuel de votre système sous forme de fichier sur votre machine distante en utilisant la commande suivante :

xclip -sel presse-papiers -o | ssh ramces@remote.host "cat > ~/clip.txt"

Apprendre à envoyer des données sur un réseau à l'aide de canaux UNIX et SSH n'est que la première étape pour comprendre le fonctionnement des réseaux informatiques. Apprenez-en davantage sur votre réseau en suivant où vont vos paquets à l'aide de Traceroute.

Maintenant que tu as fini de lire Comment utiliser les tuyaux SSH sous Linux, nous t'invitons à explorer davantage la catégorie Linux. Tu y trouveras d'autres articles intéressants qui élargiront tes connaissances et te tiendront informé. Ne cesse pas de lire et de découvrir plus!

Index
  1. Comprendre le pipeline Unix
  2. Transférer automatiquement les répertoires compressés
  3. Push et récupération Fichiers provenant d'hôtes distants
  4. Sauvegarde et restauration de lecteurs à distance
  5. Redirection de l'entrée audio vers une machine distante
  6. Diffusion de vidéo en direct à partir d'une webcam distante
  7. Impression de texte sur une console distante
  8. Transférer des données distantes vers un Presse-papiers local

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Go up