- Вопрос или проблема
- Мой аналогичный случай
- Решение
- Шаги
- установить lrzsz
- загрузить скрипты
- скопировать скрипт в /usr/local/bin/
- добавить 2 триггера для iTerm2
- нормально используйте свои rz и sz
- Ответ или решение
- Что такое rz и sz?
- Проблема
- Решение
- 1. Установите lrzsz на вашем Mac
- 2. Установите поддержку ZMODEM в iTerm2
- 3. Добавьте триггеры в iTerm2
- 4. Используйте rz и sz
- Заключение
Вопрос или проблема
Я подключен к удаленной машине Linux с моего Mac. Я следую шагам учебника, и после установки пакета lrzsz
мне сказали выполнить команду rz
. В учебнике открывалось окно для выбора файлов, но в моем случае я застрял на этом этапе:
[root@localhost /]# rz
?**B0100000023be50ive.**B0100000023be50
Что я делаю не так?
То, что вы видите, – это запрос (от rz
) к удаленной стороне (вашей) на инициацию загрузки по протоколу ZMODEM.
Очевидные вопросы здесь: Используете ли вы терминал, поддерживающий ZMODEM? Начинаете ли вы загрузку по ZMODEM после запуска rz
на удаленной стороне?
rz
сопровождается программой sz
(названия, скорее всего, образовались в виде сокращений от “прием ZMODEM” и “отправка ZMODEM” соответственно). После запуска rz
на удаленной системе (или иначе инициируя удаленную систему ожидать загрузку ZMODEM) вам нужно запустить фактическую загрузку на вашей системе; на системе *nix это обычно делается запуском sz
с соответствующими параметрами и связыванием этих двух процессов каким-либо образом. Эти две утилиты затем будут обмениваться информацией друг с другом для передачи файла и обеспечения его передачи без ошибок. (Помните, что ZMODEM возник в то время, когда коррекция ошибок была роскошью, а автоматическая повторная передача – исключением, а не нормой.)
Терминальные программы того времени отличались тем, как они обрабатывали запросы ZMODEM; некоторые автоматически начинали процесс загрузки или скачивания при получении триггерного пакета, в то время как другие требовали вручную инициировать это действие. Я помню, как я был поражен, когда использовал Terminate в те времена, что он автоматически начинал загрузку или скачивание вместо того, чтобы требовать от меня дополнительных действий для начала передачи файла локально.
Если у вас нет конкретной причины использовать ZMODEM для передачи файлов, вероятно, будет проще использовать что-то вроде sftp/scp, инфраструктура для которого (ssh) у вас, по сути, уже должна быть настроена для подключения по терминалу, если это удаленная система.
Мой аналогичный случай
- Сервер
- Ubuntu
- установлен
lrzsz
с помощьюapt-get install lrzsz
- установлен
- Ubuntu
- Клиент
- Mac
OS
:macOS v13.6.2
- терминал:
iTerm2 v3.5.5
- Mac
root@xxx:~/proxy/gost# rz
�z waiting to receive.**B0100000023be50
Решение
- добавить поддержку
Z-Modem
дляiTerm2
Шаги
в Mac
установить lrzsz
brew install lrzsz
загрузить скрипты
ссылка:
https://github.com/robberphex/iTerm2-zmodem
->
скачать iterm2-recv-zmodem.sh
и iterm2-send-zmodem.sh
скопировать скрипт в /usr/local/bin/
cp iterm2-* /usr/local/bin/
добавить 2 триггера для iTerm2
iTerm2
-》Settings
-》Profiles
-》Выберите свой профиль (обычно это уникально: Default
) -》Advanced
-》Triggers
-》Нажмите: Edit
-》всплывающее окно настроек триггеров -> Нажмите ➕
, чтобы добавить 2 триггера
->
- триггер 1
Регулярное выражение
:rz waiting to receive.\*\*B0100
Действие
:Запустить тихий копроцесс
Параметры
:/usr/local/bin/iterm2-send-zmodem.sh
Мгновенный
:отмечено
- Триггер 2
Регулярное выражение
:\*\*B00000000000000
Действие
:Запустить тихий копроцесс
Параметры
:/usr/local/bin/iterm2-recv-zmodem.sh
Мгновенный
:отмечено
скриншот:
нормально используйте свои rz
и sz
например: в сервере Ubuntu введите rz
, после чего в iTerm2 на Mac появится окно для выбора файла, нажмите Выбрать
, чтобы отправить файл с Mac на Ubuntu
Ответ или решение
Ваш вопрос касается использования утилиты rz
для передачи файлов между вашим Mac и удаленной Linux-машиной. Судя по вашей ситуации, вы столкнулись с проблемой, когда в терминале отображается сообщение ?z waiting to receive.**B0100000023be50
. Давайте разберем, как решить эту проблему и правильно настроить передачу файлов через ZMODEM.
Что такое rz
и sz
?
Утилита rz
предназначена для приема файлов через ZMODEM, а sz
— для их отправки. Когда вы запускаете команду rz
на удаленной машине, она ожидает, что на клиентской стороне (в вашем случае — Mac) будет запущено событие передачи файла.
Проблема
Ваша проблема заключается в том, что при вызове rz
не запускается процесс передачи ZMODEM с клиентской стороны. Это может происходить из-за отсутствия поддержки ZMODEM в вашем терминале или неподходящей настройки.
Решение
Чтобы правильно настроить ваш терминал и решить проблему, выполните следующие шаги:
1. Установите lrzsz
на вашем Mac
Используйте Homebrew для установки пакета lrzsz
, который включает утилиты rz
и sz
:
brew install lrzsz
2. Установите поддержку ZMODEM в iTerm2
-
Скачайте необходимые скрипты, которые добавляют поддержку ZMODEM в iTerm2. Скрипты можно найти по следующей ссылке: iTerm2-zmodem.
-
Скачайте файлы
iterm2-recv-zmodem.sh
иiterm2-send-zmodem.sh
. -
Скопируйте скачанные скрипты в папку
/usr/local/bin/
:cp iterm2-* /usr/local/bin/
3. Добавьте триггеры в iTerm2
-
Откройте настройки iTerm2:
iTerm2 -> Preferences
. -
Перейдите в раздел
Profiles
, выберите ваш профиль (обычно этоDefault
). -
Перейдите на вкладку
Advanced
, найдите секциюTriggers
и нажмитеEdit
. -
Добавьте два триггера:
-
Триггер 1:
- Regular expression:
rz waiting to receive.\*\*B0100
- Action:
Run Silent Coprocess
- Parameters:
/usr/local/bin/iterm2-send-zmodem.sh
- Instant: отмечен
- Regular expression:
-
Триггер 2:
- Regular expression:
\*\*B00000000000000
- Action:
Run Silent Coprocess
- Parameters:
/usr/local/bin/iterm2-recv-zmodem.sh
- Instant: отмечен
- Regular expression:
-
4. Используйте rz
и sz
Теперь вы можете использовать rz
и sz
для передачи файлов. Например, на сервере (Ubuntu) выполните команду rz
, и iTerm2 на вашем Mac автоматически откроет окно для выбора файла. Выберите файл и нажмите Выбрать
, чтобы отправить его с вашего Mac на удаленный сервер.
Заключение
После выполнения всех вышеуказанных шагов вы сможете успешно передавать файлы между вашим Mac и удаленной Linux-машиной с использованием утилит rz
и sz
. Если у вас остались вопросы или возникли трудности на каком-либо шаге, пожалуйста, дайте знать!