Enviar archivo por xmodem o protocolo kermit con pantalla GNU


23

Trabajo con un dispositivo RS-232 a través de GNU screen.

$ screen /dev/ttyUSB0 115200

En algún momento necesito enviar un archivo local al dispositivo usando el protocolo xmodemo kermit. En Windows uso TeraTerm que tiene un elemento de menú correspondiente. ¿Cómo puedo lograr esto en la pantalla de GNU?

Respuestas:


25

la mejor manera de pasar un archivo a través de xmodem es usarlo sx. En debian, esta aplicación forma parte del paquete 'lrzsz'.

En debian:

apt-get install screen lrzsz

pantalla / dev / ttyUSB0 115200

Luego presione Ctrl-Aseguido de :y escriba:

ejecutivo !! sx yourbinary.bin

Esto enviará el archivo a ttyUSB0 a través del protocolo xmodem


¿Se puede ejecutar esta operación de forma no interactiva, ya sea con screen cuo con cualquier otro paquete?
Vorac

3
@Vorac que siempre puedes hacersx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
GnP

2
Cómo dar el comando recibirGive your local XMODEM receive command now
AQU

¿Dónde se mantiene ese paquete? No puedo encontrarlo
not2qubit

8

Si desea usar zmodem, debe configurar la zmodemopción pass, si su sesión de pantalla ya se está ejecutando, presione CTRL+A :y simplemente ingrese zmodem pass. Para enviar los datos, simplemente use el szcomando del lrzszpaquete.

Si desea recibir datos a través de la pantalla, debe establecer el valor en catch.


zmodem catch¡es una opción que he estado buscando por años! Buen viaje, minicom.
ijustlovemath

4

Necesitaba automatizar la transferencia en serie de un archivo .bin a un xbee con xmodem, así que utilicé este código bash descuidado:

echo "Starting connection..."
screen -d -m -S uart_con /dev/ttyO1 115200
sleep 1
screen -S uart_con -X stuff 'F'$(echo -ne '\015')
sleep 1
screen -S uart_con -X exec \!\! sz -X /home/file_directory/example.abs.bin
echo "now transfering... "
sleep 20
pkill screen

La tercera línea envía un comando al otro lado (xbee) para comenzar a escuchar la transferencia de un archivo. Entonces probablemente eres bueno con solo:

screen -d -m -S uart_con /dev/ttyUSB0 115200
screen -S uart_con -X exec \!\! sz -X /path_to_file/example.file

2

Si está intentando hacer esto a través de la pantalla en OSX, puede seguir el procedimiento establecido por user32704 con algunas pequeñas modificaciones. Primero deberá compilar lrzsz desde la fuente, que se puede encontrar aquí:

https://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz

Entonces, en lugar de exec !! sx yourbinary.binusted, debe usar:

exec !! lsz -X yourbinary.bin

3
brew install lrzsz
Daniele Brugnara

sudo port install lrzsz
miken32
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.