Question

Mon code fait attendre ceci: Il fait un ssh se connecter à une autre machine, envoie le mot de passe, puis retourne le nom d'hôte de cette machine. Je donne un échantillon de mon code ci-dessous
#! / Usr / bin / expect -f
mettre ipaddr [lrange $ argv 0 0]
Définir mot de passe [lrange $ argv 1 1]
délai fixé -1
ssh root @ spawn nom d'hôte ipaddr de $
match_max 100000
attendre "* assword: *"
envoyer - "mot de passe $ \ r"

attendre eof Ce code fonctionne parfaitement plusieurs fois, mais par intermittence, je reçois l'erreur suivante
envoyer: spawn id exp4 pas ouvert
    lors de l'exécution
"Envoyer - "mot de passe $ \ r""
Pourquoi cela arrive-t-il?

Était-ce utile?

La solution

Figured pourquoi. J'avais généré des clés ssh et copié sur la machine de destination. Il n'y avait donc pas de « Mot de passe: » invite. Par conséquent avant l'envoi pourrait terminer, la connexion ssh avait fermé.

J'ai supprimé les clés SSH de la machine de destination et a couru le script à nouveau et observé aucun problème

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top