Check-YumUpdate.sh

De Pegasus45

A partir d'une liste de serveurs RHEL AS5 et AS6, ce script se connecte aux serveurs via SSH et calcule le nombre de MAJ disponible. Du code HTML est généré pour avoir un tableau (nom du serveur, nb de MAJ) avec un code couleur: 0 MAJ = vert, >1 MAJ = jaune, pb de connexion = rouge. Ce tableau est ensuite inséré dans un mail qui sera envoyé à un destinataire.

La liste des serveurs est dans liste-AS56.txt. J'ai utilisé un autre script check-rhel.sh, pour dispatcher mes serveurs RedHat suivant la version de la distribution. Je n'avais plus qu'à fusionner les 2 fichiers liste-AS5.txt et liste-AS6.txt.

L'utilitaire dos2unix est nécessaire à cause de ce que la commande "yum check-update" peut parfois retourner.

Le mail est fait de 3 parties:

  • debut-html-AS56.mail : on y trouve l'en-tête du mail et le début du mail au format HTML, cad tout ce qui se trouve avant la 1ere cellule d'un serveur,
  • $FicTmp : les différentes cellules des serveurs généré par le script,
  • fin-html-AS56.mail : la fin du tableau et la fin du message


Configuration File check-YumUpdate.sh
#!/bin/bash

Rep="/appli/check_YumUpdate"
FicServeurs="liste-AS56.txt"
FicTmp="liste-serveur.tmp"
FicMail="fichier.mail"

cd $Rep
rm -f $FicTmp
for Serveur in `cat $FicServeurs` 
do
        NbPackage=`ssh -i ~/trousseau/cle -o PreferredAuthentications=publickey root@$Serveur "yum check-update 2>/dev/null | grep -w 'noarch\|x86_64\|i386\|i686' | wc -l"`
        CR=$?
        if [ $CR -ne 0 ]
        then
                NbPackage=-1
        fi

        echo "<tr>" >> $FicTmp
        echo "<td>$Serveur</td>"  >> $FicTmp

        if [[ $NbPackage -eq -1 ]]
        then
                echo "<td align=center bgcolor=\"#FF0000\">$NbPackage</td>" >> $FicTmp
        elif [[ $NbPackage -gt 0 ]]
        then
                echo "<td align=center bgcolor=\"#FFFF00\">$NbPackage</td>" >> $FicTmp
        else
                echo "<td align=center bgcolor=\"#009900\">$NbPackage</td>" >> $FicTmp
        fi
        echo "</tr>" >> $FicTmp
done

cat debut-html-AS56.mail > $FicMail
cat $FicTmp >> $FicMail
cat fin-html-AS56.mail >> $FicMail

dos2unix $FicMail
/usr/sbin/sendmail support@olympe.lan < $FicMail


rm $FicTmp
rm $FicMail

Configuration File debut-html-AS56.mail
From: root@olympe.lan
Subject: HN: check YUM Update (/appli/check_YumUpdate/check-YumUpdates-AS56.sh)
Content-Type: text/html; charset=ISO-8859-1

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
Bonjour,<br>
<br>
Voici la liste des serveurs AS5 et AS6 avec le nombre de paquets MAJ disponibles:<br>
    <br>
    <table cellpadding="2" cellspacing="2" border="1">
      <tbody>
        <tr>
          <td>Nom du Serveur</td>
          <td>Nb de paquets dispo</td>
        </tr>

Configuration File fin-html-AS56.mail
      </tbody>
    </table>
    <br>
Un serveur avec "-1 paquet disponible" signifie qu'un pb de connexion au serveur a eu lieu.
<br>
PS: Ceci est un mail automatique.
  </body>
</html>