Enviar arquivo pelo protocolo xmodem ou kermit com a tela GNU

23

Eu trabalho com um dispositivo RS-232 via GNU screen.

$ screen /dev/ttyUSB0 115200

Em algum momento, preciso enviar um arquivo local para o dispositivo usando o protocolo xmodemou kermit. No Windows, uso o TeraTerm, que possui um item de menu correspondente. Como posso conseguir isso na tela GNU?

George M
fonte

Respostas:

25

a melhor maneira de passar um arquivo pelo xmodem é usar sx. No debian, esta aplicação faz parte do pacote 'lrzsz'.

No debian:

tela de instalação apt-get lrzsz

tela / dev / ttyUSB0 115200

Em seguida, pressione Ctrl-Aseguido por :e digite:

exec !! sx yourbinary.bin

Isso enviará o arquivo para o protocolo ttyUSB0 sobre xmodem

user32704
fonte
Esta operação pode ser executada de maneira não interativa, com screen cuou qualquer outro pacote?
Vorac 29/10/2015
3
@Vorac você sempre pode fazersx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
PNB
2
Como dar o comando de recebimentoGive your local XMODEM receive command now
AQU
Onde esse pacote é mantido? Não consigo encontrar.
not2qubit 12/07
8

Se você deseja usar o zmodem, deve definir a zmodemopção para pass, se a sua sessão de tela já estiver em execução, pressione CTRL+A :e basta entrar zmodem pass. Para enviar os dados, basta usar o szcomando do lrzszpacote.

Se você deseja receber dados via tela, defina o valor como catch.

Ulrich Dangel
fonte
zmodem catché uma opção que eu tenho procurado por idades! Boa viagem, minicom.
precisa saber é o seguinte
4

Eu estava precisando automatizar a transferência serial de um arquivo .bin para um xbee com xmodem, então usei esse código bash desleixado:

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

A terceira linha envia um comando para o outro lado (xbee) para começar a ouvir uma transferência de arquivo. Então você provavelmente é bom com apenas:

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

Se você estiver tentando fazer isso através da tela no OSX, poderá seguir o procedimento descrito pelo user32704 com algumas pequenas modificações. Você precisará primeiro criar o lrzsz a partir do código-fonte, que pode ser encontrado aqui:

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

Então, em vez de exec !! sx yourbinary.binvocê deve usar:

exec !! lsz -X yourbinary.bin
minn3h
fonte
3
bebida instalar lrzsz
Daniele Brugnara
sudo port install lrzsz
miken32