Cómo utilizar tuberías SSH en Linux

Cómo utilizar tuberías SSH en Linux
Una fotografía de un hombre trabajando frente a su computadora.

Las canalizaciones UNIX son un paso monumental en el desarrollo de UNIX y sistemas operativos similares a UNIX. Permitió a los usuarios realizar tareas informáticas complejas vinculando la entrada y salida de programas básicos. Este artículo amplía esto mostrándole cómo usar una canalización UNIX en Linux a través de una red con el protocolo SSH.

Comprender la canalización de Unix

Las canalizaciones en Unix (y por extensión, Linux) se utilizan para encadenar programas y hacer que funcionen juntos. Por ejemplo, usando cat, puedes mostrar el contenido de un archivo, pero si usas una tubería (|), puedes encadenar el <. un comando i=3> al comando para facilitar la lectura del archivo.catmore

La idea básica aquí es esta: program1 fileX | program2. Sin embargo, no se limita sólo a un archivo y dos programas. Las tuberías pueden llegar a ser tan avanzadas como necesites con tantos modificadores como puedas imaginar.

A continuación se muestran algunas formas de hacer un buen uso de la tubería (|) en situaciones SSH.

Transferir automáticamente directorios comprimidos

Una de las formas más comunes de utilizar canalizaciones UNIX es almacenar la salida de un programa en un archivo en algún lugar del sistema local. Por ejemplo, ejecutar echo "Hello, MakeTechEasier!"| tee Hello ejecutará el programa echo y al mismo tiempo almacenará la cadena «¡Hola, MakeTechEasier!» dentro del archivo «Hola».

Una terminal que muestra una redirección de canalización UNIX básica en una máquina local.

Dicho esto, puedes usar esta idea para transferir directorios entre dos hosts Linux. Para hacer eso, lee la carpeta que deseas enviar usando tar, luego canalízala a tu demonio SSH:

Este comando agrupará su carpeta en un archivo tar y lo enviará a la salida estándar del comando. La canalización UNIX luego leerá esos datos y los enviará a su host Linux remoto mediante SSH.

También puedes revertir este comando para sacar tus archivos de hosts remotos:

Enviar y recuperar archivos desde hosts remotos

También puede utilizar canalizaciones y SSH para enviar archivos individuales a través de la red. Esto funciona usando cat como una forma de cargar el contenido de un archivo y enviarlo a través de SSH:

El host remoto recibirá el flujo de salida del proceso cat local y reconstruirá el archivo tal como está.

Para recuperar un archivo de un host remoto, debe invertir el orden del comando y proporcionar la ruta de su archivo remoto:

Una terminal que muestra la transferencia de archivos individuales mediante una tubería SSH en Linux.

Realizar copias de seguridad y restaurar unidades de forma remota

De manera similar al envío de archivos y directorios, es posible realizar una copia de seguridad de unidades completas en Linux de forma remota con una tubería UNIX y SSH. Esto puede resultar útil si desea crear copias de seguridad externas rápidas y no tiene una unidad física de repuesto en este momento.

Para hacer una copia de seguridad de una unidad completa, ejecute dd con su variable “if=» configurada en la unidad que desea realizar la copia de seguridad y luego canalícela a su demonio SSH:

Revertir este comando también le permite restaurar una imagen de disco desde una máquina remota a un disco físico:

Además, esta sintaxis de canalización SSH también funcionará con particiones de disco discretas. Por ejemplo, si su sistema tiene una partición /home en “/dev/sda4”, puede ejecutar el siguiente comando para crear una copia de seguridad de la misma:

Redirigir la entrada de audio a una máquina remota

Uno de los beneficios de las canalizaciones SSH es que le permiten interactuar con máquinas remotas como si fueran un recurso local. Esto incluye la capacidad de acceder a archivos del dispositivo, como la entrada de audio de un sistema.

Para hacer esto, ejecute un subshell ALSA remoto usando SSH y envíe su salida a su demonio ALSA local:

Esto escuchará el dispositivo de entrada de audio predeterminado en la máquina remota y reproducirá lo que escucha en su sistema. Dicho esto, invertir los comandos enviará la entrada de audio de su máquina local a la salida de audio de su host remoto:

Un terminal que muestra una transmisión de audio activa utilizando tuberías SSH.

La tubería ALSA SSH también funcionará cuando la combine con otras herramientas de reproducción de audio. Por ejemplo, puede enviar la salida de un registro desde una tubería SSH a ffmpeg:

Transmisión de video en vivo desde una cámara web remota

Otro gran uso de las canalizaciones SSH en Linux es la transmisión de transmisiones de video en vivo por cámara web. Al igual que con el audio, esto le permite aprovechar el dispositivo de un host remoto y representar su salida en su máquina local.

Para transmitir desde la cámara web de un host remoto, ejecute SSH con un subshell ffmpeg y luego conéctelo a un cliente de reproducción de video en su máquina local:

Este comando transmitirá la salida de video sin procesar desde la primera cámara web en su máquina remota.

Una captura de pantalla que muestra una transmisión de video de una cámara web activa pasando por una tubería SSH en Linux.

También es posible grabar el metraje de su cámara web remota en un archivo separado. Puedes hacer esto enviando los datos desde la tubería SSH al tee antes de redirigirlos a tu reproductor de video:

Además de audio y video, también puede usar canalizaciones SSH para enviar texto sin formato en el TTY de una máquina remota. Esto es útil si desea enviar mensajes de estado a un sistema sin GUI.

Para comenzar, cree una tubería FIFO en su máquina local:

Ejecute un comando de escucha tail con su FIFO y envíe su salida a un demonio SSH:

Pruebe si su nueva tubería FIFO está funcionando en la red enviando datos de texto usando el comando echo:

Un terminal que muestra texto arbitrario en la consola TTY de una máquina.

Canalizar datos remotos a un portapapeles local

La mayor desventaja de un portapapeles del sistema es que sólo funciona con la máquina local. Esto es un problema si trabaja con varias computadoras y desea transferir datos sin crear archivos temporales.

Una forma de solucionar este problema es crear una canalización SSH que pueda leer y enviar un archivo remoto directamente al portapapeles de su sistema local:

Este comando se conectará a su máquina remota, ejecutará la utilidad cat y luego comenzará a leer el archivo «ramces.txt». Una vez hecho esto, enviará los datos remotos a su máquina local y los redirigirá al portapapeles de su sistema.

Una terminal que muestra el portapapeles de la máquina local después de una tubería SSH.

También puede enviar el portapapeles actual de su sistema como un archivo en su máquina remota usando el siguiente comando:

Aprender a enviar datos a través de una red utilizando conexiones UNIX y SSH es solo el primer paso para comprender cómo funcionan las redes informáticas. Obtenga más información sobre su red siguiendo el destino de sus paquetes mediante Traceroute.

Crédito de la imagen: Mikhail Fesenko vía Unsplash. Todas las modificaciones y capturas de pantalla realizadas por Ramces Red.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *