Come utilizzare i pipe SSH su Linux

Come utilizzare i pipe SSH su Linux
Una fotografia di un uomo che lavora davanti al suo computer.

Le pipe UNIX rappresentano un passo avanti enorme nello sviluppo di sistemi operativi UNIX e simili a UNIX. Permetteva agli utenti di eseguire compiti informatici complessi collegando insieme l’input e l’output di programmi di base. Questo articolo si estende su questo argomento mostrando come utilizzare una pipe UNIX in Linux su una rete con il protocollo SSH.

Comprendere la pipeline Unix

Le pipe su Unix (e per estensione, Linux) vengono utilizzate per concatenare i programmi e farli funzionare insieme. Ad esempio, utilizzando cat, puoi mostrare il contenuto di un file, ma se utilizzi una pipe (|), potresti concatenare < un comando i=3> al comando per rendere il file più facile da leggere.catmore

L’idea di base qui è questa: program1 fileX | program2. Tuttavia, non si limita solo a un file e due programmi. Le tubazioni possono diventare tanto avanzate quanto ne hai bisogno con tutti i modificatori che ti vengono in mente.

Ecco alcuni modi per utilizzare al meglio pipe (|) in situazioni SSH.

Trasferisci automaticamente directory compresse

Uno dei modi più comuni di utilizzare le pipe UNIX è memorizzare l’output di un programma in un file da qualche parte nel sistema locale. Ad esempio, eseguendo echo "Hello, MakeTechEasier!"| tee Hello verrà eseguito il programma echo memorizzando anche la stringa “Hello, MakeTechEasier!” all’interno del file “Ciao”.

Un terminale che mostra un reindirizzamento di pipe UNIX di base in una macchina locale.

Detto questo, puoi usare questa idea per trasferire directory tra due host Linux. Per farlo, leggi la cartella che vuoi inviare utilizzando tar, quindi collegala al tuo demone SSH:

Questo comando raggrupperà la tua cartella in un archivio tar e la invierà all’output standard del comando. La pipe UNIX leggerà quindi i dati e li invierà al tuo host Linux remoto utilizzando SSH.

Puoi anche invertire questo comando per estrarre i tuoi file dagli host remoti:

Invio e recupero di file da host remoti

Puoi anche utilizzare pipe e SSH per inviare singoli file sulla rete. Funziona utilizzando cat come un modo per caricare il contenuto di un file e inviarlo tramite SSH:

L’host remoto riceverà il flusso di output dal processo cat locale e ricostruirà il file così com’è.

Per recuperare un file da un host remoto, devi invertire l’ordine del comando e fornire il percorso del file remoto:

Un terminale che mostra il trasferimento di singoli file utilizzando una pipe SSH in Linux.

Backup e ripristino di unità in remoto

Analogamente all’invio di file e directory, è possibile eseguire il backup remoto di intere unità in Linux con una pipe UNIX e SSH. Questo può essere utile se desideri creare rapidi backup fuori sede e al momento non disponi di un’unità fisica di riserva.

Per eseguire il backup di un’intera unità, esegui dd con la variabile “if=” impostata sull’unità di cui desideri eseguire il backup, quindi collegala al tuo demone SSH:

L’inversione di questo comando consente anche di ripristinare un’immagine del disco da un computer remoto a un disco fisico:

Inoltre, questa sintassi della pipe SSH funzionerà anche con partizioni del disco discrete. Ad esempio, se il tuo sistema ha una partizione /home in “/dev/sda4” puoi eseguire il seguente comando per crearne un backup:

Reindirizzare l’ingresso audio a una macchina remota

Uno dei vantaggi delle pipe SSH è che consentono di interagire con macchine remote come se fossero una risorsa locale. Ciò include la possibilità di accedere a file del dispositivo come l’ingresso audio di un sistema.

Per fare ciò, esegui una subshell ALSA remota utilizzando SSH e invia il suo output al tuo demone ALSA locale:

Questo ascolterà il dispositivo di input audio predefinito sulla macchina remota e riprodurrà ciò che sta ascoltando sul tuo sistema. Detto questo, invertendo i comandi invierai l’input audio del tuo computer locale all’output audio del tuo host remoto:

Un terminale che mostra un flusso audio attivo utilizzando pipe SSH.

La pipe ALSA SSH funzionerà anche quando la combini con altri strumenti di riproduzione audio. Ad esempio, puoi inviare l’output di arecord da una pipe SSH a ffmpeg:

Streaming di video in diretta da una webcam remota

Un altro ottimo utilizzo dei pipe SSH in Linux è lo streaming di feed video live della webcam. Proprio come con l’audio, questo ti consente di sfruttare il dispositivo di un host remoto e renderizzare il suo output sul tuo computer locale.

Per eseguire lo streaming dalla webcam di un host remoto, esegui SSH con una subshell ffmpeg, quindi collegalo a un client di riproduzione video sul tuo computer locale:

Questo comando trasmetterà in streaming l’output video non elaborato dalla prima webcam sul tuo computer remoto.

Uno screenshot che mostra un feed video della webcam attivo che passa attraverso una pipe SSH in Linux.

È anche possibile registrare il filmato dalla webcam remota in un file separato. Puoi farlo inviando i dati dalla pipe SSH al tee prima di reindirizzarli al tuo lettore video:

Oltre ad audio e video, puoi anche utilizzare le pipe SSH per inviare testo non elaborato sul TTY di una macchina remota. Ciò è utile se desideri inviare messaggi di stato a un sistema senza GUI.

Per iniziare, crea una pipe FIFO sul tuo computer locale:

Esegui un comando in ascolto tail con il tuo FIFO e invia il suo output a un demone SSH:

Verifica se la tua nuova pipe FIFO funziona sulla rete inviando dati di testo utilizzando il comando echo:

Un terminale che mostra testo arbitrario nella console TTY di una macchina.

Invio di dati remoti a appunti locali

Il più grande svantaggio degli appunti di sistema è che funziona solo con la macchina locale. Questo è un problema se lavori con più computer e desideri trasferire dati senza creare file temporanei.

Un modo per risolvere questo problema è creare una pipe SSH in grado di leggere e inviare un file remoto direttamente negli appunti del sistema locale:

Questo comando si collegherà al tuo computer remoto, eseguirà l’utilità cat quindi inizierà a leggere il file “ramces.txt”. Una volta terminato, invierà i dati remoti al tuo computer locale e li reindirizzerà negli appunti di sistema.

Un terminale che mostra gli appunti del computer locale dopo una pipe SSH.

Puoi anche inviare gli appunti correnti del tuo sistema come file sul tuo computer remoto utilizzando il seguente comando:

Imparare a inviare dati attraverso una rete utilizzando pipe UNIX e SSH è solo il primo passo per comprendere come funzionano le reti di computer. Scopri di più sulla tua rete tracciando dove vanno i tuoi pacchetti utilizzando Traceroute.

Credito immagine: Mikhail Fesenko tramite Unsplash. Tutte le modifiche e gli screenshot di Ramces Red.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *