Bonjour,
Faisant suite à mon précédent appel à l'aide sur le forum, je souhaiterais à présent pouvoir lancer des commandes en AWK et en déporté via SSH sur une liste de serveurs fournie dans un fichier en entrée.
Le but serait d'avoir une sorte de buletin de santé des serveurs (espace disque et mémoire), sachant qu'il y a en a beaucoup et de renvoyer ce rapport par email :
Comme la dernière fois, si jamais vous aviez des observations ou des suggestions d'autres indicateurs à faire ressortir en plus de mon code, n'hésitez pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 # ! /bin/bash # Espace disque occupés de tous les FS d'une machine (seuils d'alerte et d'erreur en paramètres à changer) # MC le 01/10/2019 # Variables fichier="test.txt" #Fichier en entrée email="mon.adresse.email.fr" #Destinataire du message seuilerr=90 #Seuil d'erreur a*modifier (poucentage d'occupation du disque) seuilwarn=70 #Seuil de warning a*modifier (poucentage d'occupation du disque) while IFS= read -r ligne do machine="root@"$ligne #Ouverture du canal # Espace disque disponible : gestion des alertes dfree=$(ssh -p $machine df -Pm | awk -v err=$seuilerr -v att=$seuilwarn ' NR>1 {total+=$2; utilise+=$3; dispo+=$4; if (+$5>err){printf " => ALERTE : %15s OCCUPE A : %4d% KO\n", $6, $5 } else if (+$5>att){printf " => WARNING : %15s OCCUPE A : %4d% OK\n", $6, $5 } else {printf " => NOTE : %15s OCCUPE A : %4d% OK\n", $6, $5 }} END{print " => Taille totale du disque : " total " Mo - Utilisee : " utilise " Mo - dispo : " dispo " Mo"}') # Mémoire disponible : pour information mfree=$(ssh -p $machine vmstat 1 2 -S M | awk 'END {print " => Disponibilité du CPU : "$15"% - Mémoire disponible : "$4" Mo"}') message="\n ###################\n Nom de la machine : $machine . \n ###################\n $dfree \n $mfree \n" # Programme principal if [ $(echo $dfree | grep -c ALERTE) -gt 0 ] then echo -e "$message" | /usr/bin/mutt -x -s "Espace disque presque sature sur : " . $machine $email >/dev/null 2>&1 fi done < "$fichier" # Fin exit 0
Par avance merci.
Marco.
Partager