Ubuntu Peronista@TTBP

Este es un espejo en el Tilde Blog Project del blog original Ubuntu Peronista. Se encuentra disponible en Tildeverso únicamente con fin histórico.



13 april 2023

¿Como envío y recibo ficheros por Zmodem en Ubuntu?

Reunido en Consejo de Ministros en la Casa Rosada, Juan Perón explica cómo utilizar el protocolo Zmodem para transmitir ficheros en Ubuntu.

¡Estimados señores!

Uno de los fundamentos del trabajo en el estado es la segura transferencia de ficheros.

Cualquiera lo puede hacer en papel y para ello se han elaborado los métodos de firmado, lacrado, y en tiempo de guerra, el cifrado.

Cuando la evolución de la técnica nos permitió introducir la máquina - apoyada en enlaces de datos públicos - se hizo evidente que dichos métodos resultaban a todas luces suficientes, en tanto no se puede responder con conciliábulos de ayer a los problemas de hoy. Los nuevos predicamentos de la tecnología hicieron imperativo que tuviésemos que encontrar nuevos y especiales temperamento con los cuales cuidar el traslado de los ficheros.

Resulta innegable que para transferir ficheros a través de una red de datos moderna como las que utiliza nuestro Movimiento, debe especialmente recurrirse a la copia a través de shell seguro que nos ofrece scp.

Este método sin embargo no es primordial: durante el Peronismo del Segundo Plan Quinquenal, en aquellas queridas máquinas antiguas conectadas a redes heredadas, no podíamos más que hacer transmisiones de fichero a través del viejo y peludo FTP. Sin embargo, no siempre fue así, y en el mundo "retro" no siempre lo será: podríamos encontrarnos con medios del Primer Peronismo, donde se carecía de dicho protocolo. Ante tal incordio, podríamos recurrir a un amigo de la interconexión que brillaba en aquellos momentos donde todo estaba por hacerse: el viejo protocolo de 1986 para la transmisión en línea, el Zmodem.

Zmodem es un protocolo propietario de transferencia - desarrollado por Charles Forsberg para la red de paquetes conmutados Telenet - el cual obtuvo su bien merecido carilo al ofrecer al Pueblo una buena velocidad de transmisión sobre cableados de par de cobre. La idea detrás del mismo era lograr atascos en las transmisiones por módem a través de cable telefónico.

Por acuerdo se evitaba el envío superfluo de paquetes de ACK ("enterado") en la transmisión, y sólo se recurría a enviar paquetes NAK ("no enterado") ante algún error, lo que aceleraba no menos de un 30% El envío de datos en corriente electrónica ("stream"), si esta se hacía en líneas de alta calidad, estables de Teléfonos del Estado, y sobre todo full-dúplex (como suele ser el caso en la conexión Ethernet).

Vean señores, en particular, este protocolo puede venirnos de perillas para enviar a través de múltiples canales de transmisión, incluso algunos que nadie pensó al momento de diseñarlo. En particular, podremos usarlo para transmitir a través de líneas de datos de área local, e incluso a través de puertos de comunicación seriales circunstanciales. Esto permitiría transmitir datos - comparativamente a baja velocidad - entre sistemas UNIX y similares, e incluso máquinas antiguas con puerto de comunicación serial.

A tal fin os enseñaré a obrar con los programas sz y rz, que implementan Zmodem en sistemas UNIX, para enviar y recibir por zmodem respectivamente.

Sin embargo, en equipamiento actual sus limitaciones no son baladíes. Están dadas por inconvenientes no conecbidos a la hora de realizarlo originalmente en la década del ochenta. Una principal es la incapacidad de transmitir ficheros mayores a los 4 GB, inusitado por entonces. La otra es la imposibilidad de extender el protocolo para transmitir de forma segura.

Sin embargo, podremos subsanar esto último mediante una implementación moderna para sistemas GNU con Linux, que haga uso de Zmodem envolviéndolo en el protocolo sobre la indestructible capa del Shell Seguro SSH: esta se denomina zssh.

Para poder utilizar Zmodem de manera segura en nuestro sistema Ubuntu podremos recurrir a abrir una terminal con Ctrl+Alt+T y utilizar los siguientes comandos para instalar la paquetería necesaria tanto en la máquina a emitir como en la máquina a recibir.

sudo apt install lrzsz zssh

En el caso de máquinas con DOS, podremos recurrir a implementaciones como ls oficial dsz, o bien alternativas como rzsz, o bien txzm. Usar zmodem con SSH con zssh

En el caso de una máquina con Linux, podremos conectamos al servidor de manera segura recurriendo a zssh, mediante:

zssh -e usuario@maquina

(claro que si tenemos, una llave PGP opcional le agregaríamos -i ~/.ssh/llave_pgp.key)

Zssh responderá con:

Press ^@ (C-Space) for enter File Transfer Mode, then ? for help.

Y conectará al host remoto (solicitando contraseña si no le indicamos nuestra llave opcional, claro está).

Una vez conectados con Zssh, podremos usar una sesión de shell seguro similar a SSH, que corre nuestro intérprete de comandos normal (en el caso de Ubuntu se trata de Bash). Sin embargo, al presionar Ctrl+Barra Espaciadora podremos ingresar al Modo de Transferencia de ficheros, el cual se denota con el prompt zssh >.

Lo que nos indica que presionemos Ctrl+Barra espaciadora para ingresar al Modo de Transferencia de Ficheros, y luego ingresemos ? para iniciar la ayuda de lrzsz:

zssh > ?

A lo cual el sistema deberá devolvernos algo como: Comandos Incorporados de Zssh :

? : Mensaje de ayuda cd : cambiar directorio disconnect : desconecta y sale escape [^X] : Cambia la tecla escape a Ctrl+X sin argumento, imprime la tecla de escape actual exit : sale del modo de transferencia de ficheros help : Mensaje de ayuda hook prg : cuelga el programa 'prg' en la terminal en lugar de sz o rz quit : lo mismo que exit repeat : repite cmd por siempre (Ctrl+C lo interrumpe) rz : Recibe ficheros suspend : suspende zssh sz ... : envia ficheros version : Presenta información de versión ... : ejecuta programa

Uso : Descargas : en el shell remoto ejecute sz antes de cambiar al modo de transferencias, luego en el shell local ingrese rz Subidas : En el shell local cambie al modo transferencias y ingrese sz En el lado remoto se ejecutará automáticamente rz

Pistas:

Bajar archivos usando ZMODEM

Como vemos en la ayuda, para bajar un fichero desde el servidor, debemos enviarlo desde el servidor, usando allí sz:

sz -e archivo.ext

Luego de ponerlo a enviar en el servidor, pasamos al Modo de Transferencia de Archivos en máquina local presionamos Ctrl+Barra espaciadoras, y en el prompt zssh > del lado del cliente iniciamos la transferencia indicando rz -e:

zssh > rz -e

El cliente nos indicará la transferencia:

Receiving archivo.ext Bytes received: 14120/ 14120 BPS:60536

Transfer complete

En el caso de usar tmux, debemos recurrir a una implementación especial del envolvedor, llamada trzsz.

Subir archivos con ZMODEM

Para enviar un fichero al servidor, en la máquina local presionamos Ctrl+Barra espaciadora para activar el modo de transferencia de archivos, y en el prompt zssh > simplemente indicamos:

zssh > sz -e archivo.ext

A lo cual el sistema nos responderá con las estadísticas similares a:

Sending: archivo.ext Bytes Sent: 976 BPS:19892

Transfer complete

esto nos servirá para afrontar transmisiones en red de área local o incluso envuelto en SSH.

Zmodem por puerto serial a DOS

Pero podremos recurrir a hacer transmisiones a través de un adaptador de puerto serial.

Para ello usamos un adaptador, conectando a 9600 baudios, junto con algún programa para terminal, por ejemplo minicom (en la terminal) o cutecom (en la interfaz gráfica de GNU).

Si en lugar de ellos deseamos usar la terminal con sz, debemos recurrir al modificador -b si es un fichero binario, y -a si es un fichero de texto ASCII, e indicar el dispositivo del puerto serial (por ejemplo, si recurrimos a un adaptador USB a puerto serial es /dev/ttyUSB0:

sz -e fichero.ext -b /dev/ttyUSB0 9600 8N1

En CP/M+86 y similares podremos agregarle la opción -o que evitará recurrir a control de 32 bits y lo limitará a 16 bits.

Para recibirlo en otra máquina que no tenga Linux, por ejemplo una con FreeDOS o MS-DOS, usaríamos el comando COPY por ejemplo, desde el puerto serie com2:

copy com2 fichero.ext

Esto iniciará la transmisión del fichero que irá llegando por Zmodem. Ante la necesidad, podremos interrumpirla con Ctrl+z.