Envoyer un fichier par protocole xmodem ou kermit avec écran GNU

23

Je travaille avec un périphérique RS-232 via GNU screen.

$ screen /dev/ttyUSB0 115200

À un moment donné, j'ai besoin d'envoyer un fichier local à l'appareil en utilisant le protocole xmodemou kermit. Sous Windows, j'utilise TeraTerm qui a un élément de menu correspondant. Comment puis-je y parvenir dans l'écran GNU?

George M
la source

Réponses:

26

la meilleure façon de passer un fichier via xmodem est d'utiliser sx. Dans debian, cette application fait partie du paquet 'lrzsz'.

Dans debian:

écran d'installation d'apt-get lrzsz

écran / dev / ttyUSB0 115200

Appuyez Ctrl-Aensuite sur :et tapez:

exec !! sx yourbinary.bin

Cela enverra le fichier à ttyUSB0 via le protocole xmodem

user32704
la source
Cette opération peut-elle être exécutée de manière non interactive, avec screen cuou avec tout autre package?
Vorac
3
@Vorac vous pouvez toujours le fairesx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
GnP
2
Comment donner la commande de réceptionGive your local XMODEM receive command now
AQU
Où ce package est-il conservé? Je ne le trouve pas.
not2qubit
8

Si vous souhaitez utiliser zmodem, vous devez définir l' zmodemoption sur pass, si votre session d'écran est déjà en cours, appuyez sur CTRL+A :et entrez simplement zmodem pass. Pour envoyer les données, utilisez simplement la szcommande du lrzszpackage.

Si vous souhaitez recevoir des données via l'écran, vous devez définir la valeur sur catch.

Ulrich Dangel
la source
zmodem catchest une option que je recherche depuis des lustres! Bon débarras, minicom.
ijustlovemath
4

J'avais besoin d'automatiser le transfert série d'un fichier .bin vers un xbee avec xmodem, j'ai donc utilisé ce code bash bâclé:

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 troisième ligne envoie une commande à l'autre côté (xbee) pour commencer à écouter un transfert de fichier. Vous êtes donc probablement bon avec juste:

screen -d -m -S uart_con /dev/ttyUSB0 115200
screen -S uart_con -X exec \!\! sz -X /path_to_file/example.file
Nikos Sakellariou
la source
2

Si vous essayez de le faire via l'écran sous OSX, vous pouvez suivre la procédure définie par user32704 avec quelques petites modifications. Vous devrez d'abord construire lrzsz à partir de la source, qui peut être trouvée ici:

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

Ensuite, au lieu de exec !! sx yourbinary.binvous, utilisez:

exec !! lsz -X yourbinary.bin
minn3h
la source
3
brew install lrzsz
Daniele Brugnara
sudo port install lrzsz
miken32