Il y a un chouette petit outil appelé zssh qui le rend facile à utiliser les lszrz
utilitaires pour transférer des fichiers en utilisant zmodem via une connexion ssh existante. C'est étonnamment pratique ... mais il semble que je devrais pouvoir accomplir la même chose en utilisant expect
. Je suis devenu loin ...Aidez-moi à conduire Zmodem sur ssh avec attendre
#!/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
}
Ce démarrage rz
après avoir vu un cadre ZRQINIT
, et il se connecte apparemment rz
à la session ssh, mais il ne fonctionne pas. rz
dit:
Retry 0: Bad CRCe.**B0100000023be50
Retry 0: Bad CRC**B0600000023d984
Retry 0: Bad CRC**B0600000023d984
... et ainsi de suite.
Existe-t-il un moyen de faire fonctionner ce système? Merci!
Je suis curieux, si vous utilisez déjà ssh, pourquoi ne pas transférer des fichiers avec scp? –
Principalement (a) Je suis juste intéressé à essayer de comprendre mieux, et (b) l'utilisation de scp nécessite une seconde connexion, ce qui peut être facile ou pas (par exemple, s'il y a plusieurs sauts entre mon bureau et la télécommande système, être capable de transférer des fichiers sur le canal * existant * est extrêmement pratique). – larsks