2009-09-07 5 views
3

Mon code s'attendre à ce que cela: Il se connecte à une autre machine ssh, envoie le mot de passe, puis renvoie le nom d'hôte de cette machine. Je donne un échantillon de mon code ci-dessous
#!/Usr/bin/expect -f
set ipaddr [lrange $ argv 0 0]
mot de passe défini [lrange $ argv 1 1]
délai fixé -1
ssh root spawn @ $ hostname ipaddr
match_max 100000
attendent "* assword: *"
envoyer - "mot de passe $ \ r"
attendre eof

Ce code fonctionne parfaitement plusieurs fois, mais par intermittence, je reçois la erreur suivante
envoyer: spawn id exp4 pas ouvrir
lors de l'exécution
"envoyer - "mot de passe $ \ r""

Pourquoi cela se produit?problèmes avec expect -send: ID spawn exp4 pas ouvert

+4

'Envoie: spawn id exp4 pas open' implique que la 'root @ $ ipaddr ssh hostname' a échoué ou fermé avant le 'send' peut compléter. – mas

+0

Merci .... va explorer ce – Ninja

+1

ce que je voudrais savoir, c'est comment vérifier l'ID spawn pour voir si elle est ouverte ou non? – ericslaw

Répondre

0

Compris pourquoi. J'avais généré des clés ssh et les ai copiées sur la machine de destination. Il n'y avait donc pas d'invite "Password:". Par conséquent, avant que l'envoi puisse se terminer, la connexion ssh était fermée.

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

+2

J'ai encore une question à ce sujet. Si vous avez généré la clé ssh, vous devriez rencontrer ce problème à chaque fois, pas par intermittence. –