Comment utiliser bash/attendre pour vérifier si une connexion SSH fonctionne

Mon équipe gère un grand nombre de serveurs, la politique de la société prévoit que les mots de passe sur ces serveurs doivent être changés toutes les deux semaines. Parfois, notre base de données officielle des mots de passe devient hors de date pour quelque raison que ce soit (les gens oublient de le mettre à jour, en général), mais nous ne pouvons pas identifier ce parfois jusqu'à des mois plus tard, puisque nous ne sommes pas utiliser systématiquement chaque serveur.

Je veux écrire un script qui va gratter les mots de passe de la base de données, et d'utiliser ces mots de passe pour tenter une (ssh) de connexion pour chaque serveur, chaque soir, et envoyer un e-mail avec les résultats de l'équipe. Je suis en mesure de gratter la base de données pour les informations de connexion, mais je ne suis pas sûr de la façon de vérifier si le service ssh connexion a réussi ou pas en attendre.

Je ne peux pas utiliser l'authentification par clé publique pour cette tâche. Je voulez authentification par mot de passe afin que je puisse vérifier le mot de passe.

- Je désactiver la clé publique d'authentification en spécifiant le fichier suivant:

PasswordAuthentication=yes
PubkeyAuthentication=no

Mes tentatives de le script expect:

# $1 = host, $2 = user, $3 = password, $4 = config file
expect -c "spawn ssh $2@$1 -F $4
expect -re \".*?assword.*?\"
send \"$3\n\"
...
send \'^D\'"

J'ai pensé que peut-être la sortie d'état pourrait indiquer la réussite? Ne pouvais pas trouver quelque chose dans les pages de man.

Qui change le mot de passe? Peut-être qu'ils devraient également être responsable de la mise à jour de la base de données. Mettre le mot de passe dans ce genre de script semble à l'encontre du but de changer le mot de passe fréquemment.
Le mot de passe ne va pas dans le script. Les mots de passe sont raclées à partir d'une base de données et passées comme arguments de ligne de commande du script, ce qui est parfaitement logique pour moi. Et même si les gens ont la responsabilité de mettre à jour la base de données, souvent, ils ne le font pas. C'est un test de cohérence pour s'assurer que tous les mots de passe dans la base de données sont correctes.

OriginalL'auteur BlackSheep | 2012-09-05