J'ai un script Shell local. Maintenant, je veux exécuter ce script local sur une machine distante. Bien sûr, je peux utiliser ssh
, mais comme il (le script Shell local) devrait être comme un script automatisé, il ne devrait pas demander de mot de passe pour entrer manuellement. J'ai donc utilisé s'attendre à éliminer ce problème, de sorte que si j'exécute le script, il ne demandera pas de mot de passe. Et mon script ressemble à ci-dessous.
#!/usr/bin/expect
spawn ssh -o GSSAPIAuthentication=no [email protected] 'bash -s' < /path/to/localscript
expect -timeout 7 "*(yes/no)?" { send "yes\r";exp_continue }
expect -timeout 3 "*d: "
send "qbcrootpass\n"
interact
Mais ça ne marche pas. Veuillez noter que dans mon scénario, je ne souhaite pas utiliser l'authentification par clé publique.
Veuillez m'aider à exécuter un script local sur une machine distante en utilisant expect.
Cette redirection est traitée par votre shell sur la ligne de commande. Attendez-vous ne comprendra pas comment le faire. Cela devrait fonctionner (non testé):
set fh [open /path/to/localscript r]
set contents [read $fh]
close $fh
spawn ssh ... "bash -c '$contents'"