Там это отличный маленький инструмент под названием zssh, что позволяет легко использовать lszrz
утилиты для передачи файлов с использованием zmodem поверх существующей SSH связи. Это удивительно удобно ... но мне кажется, что я должен , чтобы иметь возможность выполнить то же самое, используя expect
. Я получил это далеко ...Помоги мне управлять Zmodem через SSH с ожидать
#!/usr/bin/expect -f
spawn ssh $argv
set ssh_spawn_id $spawn_id
send_user "ssh is: $ssh_spawn_id\n"
interact -o "\030B0000" {
send_user "\nStarting zmodem receive.\n"
spawn rz -v
set rz_spawn_id $spawn_id
send_user "rz is: $rz_spawn_id\n"
while {1} {
expect {
eof break
-i $rz_spawn_id -re .+ {
send -raw -i $ssh_spawn_id $expect_out(buffer)
}
-i $ssh_spawn_id -re .+ {
send -raw -i $rz_spawn_id $expect_out(buffer)
}
}
}
send_user "\nFinished zmodem receive.\n"
set spawn_id $ssh_spawn_id
}
Этот запуск rz
после просмотра ZRQINIT
кадр, и он, очевидно, связывает rz
к SSH сессии, но он не работает. rz
говорит:
Retry 0: Bad CRCe.**B0100000023be50
Retry 0: Bad CRC**B0600000023d984
Retry 0: Bad CRC**B0600000023d984
... и так далее.
Есть ли способ сделать эту работу? Благодаря!
Мне любопытно, если вы уже используете ssh, почему бы не передать файл с помощью scp? –
В основном (a) Мне просто интересно понять, что лучше ожидать, и (б) использование scp требует второго соединения, которое может быть или не быть легким (например, если между моим рабочим столом и удаленным система, способная передавать файлы по * существующему * каналу, чрезвычайно удобна). – larsks