130 votes

Comment créer un script bash pour vérifier la connexion SSH ?

Je suis en train de créer un script bash qui se connecterait aux machines distantes et créerait des clés privées et publiques.

Mon problème est que les machines à distance ne sont pas très fiables, et elles ne sont pas toujours en place. J'ai besoin d'un script bash qui vérifierait si la connexion SSH est établie. Avant de créer réellement les clés pour une utilisation future.

34voto

Adrià Cidre Points 74

Vous pouvez utiliser quelque chose comme ça

$(ssh -o BatchMode=yes -o ConnectTimeout=5 user@host echo ok 2>&1)

Cela produira "ok" si la connexion ssh est OK

23voto

Brian Ott Points 71
ssh -q -o "BatchMode=yes" -i /home/sicmapp/.ssh/id_rsa <ID>@<Servername>.<domain> "echo 2>&1" && echo $host SSH_OK || echo $host SSH_NOK

22voto

iarroyo Points 106

En complément de la réponse de @Adrià Cidre vous pouvez faire :

status=$(ssh -o BatchMode=yes -o ConnectTimeout=5 user@host echo ok 2>&1)

if [[ $status == ok ]] ; then
  echo auth ok, do something
elif [[ $status == "Permission denied"* ]] ; then
  echo no_auth
else
  echo other_error
fi

10voto

lucek Points 1380

En dessous de la commande ssh devrait avoir un code de sortie de 0 sur une connexion réussie et une valeur non nulle sinon.

ssh -q -o BatchMode=yes user@remote.com exit

if [ $? != "0" ]; then
    echo "Connection failed"
fi

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X