web-dev-qa-db-fra.com

exécuter un script bash local sur une machine distante en utilisant expect

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.

1
Uvais Ibrahim

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'"
2
glenn jackman