Отправить файл по протоколу xmodem или kermit с экраном GNU


23

Я работаю с устройством RS-232 через GNU screen.

$ screen /dev/ttyUSB0 115200

В какой-то момент мне нужно отправить локальный файл на устройство, используя протокол xmodemили kermit. В Windows я использую TeraTerm, у которого есть соответствующий пункт меню. Как я могу добиться этого на экране GNU?

Ответы:


25

лучший способ передать файл через xmodem - использовать sx. В Debian это приложение является частью пакета 'lrzsz'.

В Debian:

apt-get установить экран lrzsz

screen / dev / ttyUSB0 115200

Затем нажмите, Ctrl-Aа затем :введите:

Отлично !! sx yourbinary.bin

Это отправит файл на ttyUSB0 по протоколу xmodem


Может ли эта операция выполняться не в интерактивном режиме с помощью screen cuкакого-либо другого пакета?
Vorac

3
@Vorac вы всегда можете сделатьsx binary.bin | socat FILE:/dev/ttyUSB0,b115200,raw -
GnP

2
Как дать команду приемаGive your local XMODEM receive command now
AQU

Где хранится этот пакет? Я не могу найти это.
not2qubit

8

Если вы хотите использовать zmodem, вы должны установить zmodemопцию на pass, если ваш сеанс экрана уже запущен, нажмите CTRL+A :и просто введите zmodem pass. Для отправки данных просто используйте szкоманду из lrzszпакета.

Если вы хотите получать данные через экран, вы должны установить значение на catch.


zmodem catchэто вариант, который я искал целую вечность! Хорошее избавление, миником.
ijustlovemath

4

Мне нужно было автоматизировать последовательную передачу файла .bin в xbee с помощью xmodem, поэтому я использовал этот небрежный код:

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

Третья строка отправляет команду на другую сторону (xbee), чтобы начать прослушивание передачи файла. Таким образом, вы, вероятно, хорошо с просто:

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

2

Если вы пытаетесь сделать это через экран в OSX, вы можете следовать процедуре, изложенной user32704, с некоторыми небольшими изменениями. Сначала вам нужно собрать lrzsz из исходного кода, который можно найти здесь:

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

Тогда вместо exec !! sx yourbinary.binвас следует использовать:

exec !! lsz -X yourbinary.bin

3
brew install lrzsz
Даниэле Бругнара

sudo port install lrzsz
miken32 20.09.16
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.