J'ai un script rapide pour exécuter une commande sur chaque serveur en utilisant ssh (je suis sûr qu'il y a beaucoup de meilleures façons de le faire, mais il était destiné à travailler rapidement!). Pour le test1 etc, il n'y a pas de serveur donc le script continue, le script continue aussi si l'authentification pubkey échoue. Toutefois, si le script se connecte, la date est imprimée mais la boucle ssh se termine ...dans ma boucle bash sur une liste de certains serveurs, si le ssh connecte le script bash quitte
#!/bin/bash -x
cat <<EOF |
##file servers
test1
test2
server1
server2
EOF
while read line
do
if [ "${line:0:1}" != "#" ]; then
ssh -q -oPasswordAuthentication=no -i id_dsa [email protected]${line} date
fi
done
echo read line must have exited
sortie est comme si;
+ cat
+ read line
+ '[' t '!=' '#' ']'
+ ssh -q -oPasswordAuthentication=no -i id_dsa [email protected] date
+ read line
+ '[' t '!=' '#' ']'
+ ssh -q -oPasswordAuthentication=no -i id_dsa [email protected] date
+ read line1
+ '[' s '!=' '#' ']'
+ ssh -q -oPasswordAuthentication=no -i id_dsa [email protected] date
Fri Jul 9 09:04:16 PDT 2010
+ read line
+ echo read line must have exited
read line must have exited`enter code here`
quelque chose à voir avec le retour réussi de la commande ssh est de jouer avec la condition de la boucle ou le var ... des suggestions sur les raisons?
. testé et c'est parti! –