Traduction en shell de mon petit algorithme

Fermé
leohan Messages postés 1 Date d'inscription samedi 15 juillet 2006 Statut Membre Dernière intervention 15 juillet 2006 - 15 juil. 2006 à 16:58
foobar47 Messages postés 13536 Date d'inscription jeudi 9 janvier 2003 Statut Contributeur Dernière intervention 16 mai 2014 - 20 juil. 2006 à 11:47
Bonjour !


J'aimerais traduire en langage shell linux le petit algorithme suivant :


Se connecter au serveur1, rentrer automatiquement login et mot de passe
vérifier que le process toto et le process titi sont bien présents

si oui afficher OK, si non afficher NOK

Se connecter au serveur2, ...

et ainsi de suite sachant que j'ai 20 serveurs dont je veux vérifier que les applicatifs tournent bien, et ce serait mieux d'avoir un script auto lancé sur une seule machine, plutôt que de se connecter à la mano sur chacun des 20 serveurs...

Quelqu'un peut-il m'aider SVP ?

(je crois qu'il existe les instructions rlogin et rsh mais je ne sais pas si ça marcherait... ? qu'elle est la syntaxe ? je n'ai pas de contraintes liées à la sécurité donc pas la peine de faire du ssh ;))

8 réponses

foobar47 Messages postés 13536 Date d'inscription jeudi 9 janvier 2003 Statut Contributeur Dernière intervention 16 mai 2014 532
18 juil. 2006 à 10:38
Salut,

https://www.nagios.com/

Tu n'as pas trop le choix, pour la connexion, t'es obligé de faire du ssh.
SSH te permet en plus d'éxécuter des commandes à distance.

Voici une ébauche, vite fait :
#!/bin/sh

#declaration des machines
srv1="192.168.2.202"
srv2="192.168.0.2"
srv3=......

#declaration des utilisateurs
user1="root"
usre2="test"

#declaration des services

service1="httpd"
service2="sshd"
service3=""

# on fait du ssh puis on execute la commande ps 
# pas besoin de voir l'affichage
#si tu veux voir l'affichage, retire le "> /dev/null"

#Test du service1 sur le serveur1
ssh $user1@$srv1 "ps -ef | grep $service1 | grep -v grep" > /dev/null
# si il n'y a pas d'erreur
if [ $? -eq 0 ]; then
#on affiche ok
echo "Le process $service1 tourne"
#sinon
else
#on affiche pas ok
echo "Le process $service1 ne tourne pas"
fi

#Test du service2 sur le serveur1
ssh $user1@$srv1 "ps -ef | grep $service2 | grep -v grep" > /dev/null
# si il n'y a pas d'erreur
if [ $? -eq 0 ]; then
#on affiche ok
echo "Le process $service2 tourne"
#sinon
else
#on affiche pas ok
echo "Le process $service2 ne tourne pas"
fi


#fin du code


Evidemment, cela implique que tes binaires soient "joignables" par le shell.
Sinon, il faut préciser /bin/ps -- /bin/grep -- etc...

A toi de l'adapter en fonction de tes besoins.

Evidemment, ce script n'a pas la prétention d'être pleinement optimiser...

;-)

A++
0
Merci beaucoup pour la précision de ta réponse Foobar47 !! :)
0
foobar47 Messages postés 13536 Date d'inscription jeudi 9 janvier 2003 Statut Contributeur Dernière intervention 16 mai 2014 532
19 juil. 2006 à 10:24
Mais je t'en prie !!

Ca marche au moins ??

N'oublie pas de rendre ton script executable avec cette commande :

chmod 755 script.sh

Puis tu l'executes comme ceci :

./script.sh
0
ça ne marche pas car il y a une erreur d'autentification : j'ai cherché sur plusieurs sites parlant de ssh et j'ai vu qu'il fallait un couple de clés publique/privée.

J'ai donc fait :

sur la machine qui appelle :
cd ~/.ssh
ssh-keygen -t dsa
(pas de passphrase)

deux clés ont été générées. Ensuite, je voulais commencer par un truc simple c'est-à-dire faire un ssh depuis ma machnie 1 vers ma machine 1, donc j'ai copié la clef publique dans un fichier authorized_keys (à ce stade, mes 2 clés et mon fichier authorized sont tous les 3 dans le répertoire /root/.ssh)

Problème, ça ne marche pas :(
lorsque je tape :
ssh root@nom_du_serveur1

il me demande mon mot de passe, et quand je le rentre ça me dit qu'il est incorrect, access denied !!

j'comprends pas trop :( as-tu une idée ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
19 juil. 2006 à 15:31
Salut,


As-tu configurer ton serveur pour l'authentification par clé?
Par défaut c'est par password. Donc les clés ne servent à rien.

Ca suffit d'avoir un compte sur le serveur et de se connecter avec son password.

Si tu veux une authentification par clé publique regarde dans le fichier de configuration

PubkeyAuthentication yes # Let people use keys to authenticate 

AuthorizedKeysFile .ssh/authorized_keys # path to the authorized keys 

PasswordAuthentication no # NO login/password auth 


lance la commamnde avec l'option -v pour mode verbeux

ssh -v root@nom_du_serveur1 
lami20j

P.S. et n'oublie pas d'avoir la clé privé sur le pc ou compte client
0
foobar47 Messages postés 13536 Date d'inscription jeudi 9 janvier 2003 Statut Contributeur Dernière intervention 16 mai 2014 532
20 juil. 2006 à 11:04
Vérifie que tu n'as pas interdit à l'utilisateur root de se connecter sur ssh.
Une option du genre :
PermitRootLogin Yes|No

Pas besoin de clé publique dans ton cas. Enfin, je ne pense pas.

Vérifie aussi que le firewall laisse passer ssh sur tous les serveurs.

A++
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
20 juil. 2006 à 11:36
Salut,

Pas besoin de clé publique dans ton cas.

Ben, s'il les a crées pourquoi ne pas les utiliser?
Bien sur il peut garder l'authentification par password, à lui de voir.


J'ai donc fait :

sur la machine qui appelle :
cd ~/.ssh
ssh-keygen -t dsa
(pas de passphrase)

deux clés ont été générées. Ensuite, je voulais commencer par un truc simple c'est-à-dire faire un ssh depuis ma machnie 1 vers ma machine 1, donc j'ai copié la clef publique dans un fichier authorized_keys (à ce stade, mes 2 clés et mon fichier authorized sont tous les 3 dans le répertoire /root/.ssh)


lami20j
0
foobar47 Messages postés 13536 Date d'inscription jeudi 9 janvier 2003 Statut Contributeur Dernière intervention 16 mai 2014 532
20 juil. 2006 à 11:47
Oui, tu as raison, ça automatisera encore plus le script de départ.
C'est d'ailleur un souhait car il dit qu'il veut entrer "automatiquement" le login/password...

Donc, même s'il n'y a plus de login/pass, ce sera automatique... ;-)
0