IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[Bash] Script vérification services = état service pas bon du tout


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [Bash] Script vérification services = état service pas bon du tout
    Bonjour à toutes et à tous,

    Je suis tout nouveau sur le forum
    Pour me présenter un peu, je travaille pour une société de recherche et ma cheffe souhaite que l'on reçoive un mail quand un service passe en état failed sur nos serveurs linux.

    Depuis ce matin je me documente et j'apprends à faire du script sous linux donc svp soyez indulgent sur ce que vous allez voir ci-dessous

    Mon script est terminé et il fait ce que je souhaite c'est à dire :
    - vérifier si des services sont en état failed
    - relancer le service en question
    - envoyer un mail sur une liste pour qu'on soit prévenu

    Dans le mail en question, j'inclus le status du service. Pour simuler un service en failed, j'ai modifié le fichier conf du service clamav-freshclam.

    Quand je fais manuellement un systemctl status clamav-freshclam.service, j'obtiens ca :

    root@xxxx:~# systemctl status clamav-freshclam.service
    ● clamav-freshclam.service - ClamAV virus database updater
    Loaded: loaded (/lib/systemd/system/clamav-freshclam.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Mon 2021-03-29 16:09:46 CEST; 21min ago
    Docs: man:freshclam(1)
    man:freshclam.conf(5)
    https://www.clamav.net/documents
    Process: 12921 ExecStart=/usr/bin/freshclam -d --foreground=true (code=exited, status=2)
    Main PID: 12921 (code=exited, status=2)

    mars 29 16:09:46 xxxx systemd[1]: Started ClamAV virus database updater.
    mars 29 16:09:46 xxxx freshclam[12921]: ERROR: Missing argument for option at /etc/clamav/freshclam.conf:3
    mars 29 16:09:46 xxxx freshclam[12921]: ERROR: Can't open/parse the config file /etc/clamav/freshclam.conf
    mars 29 16:09:46 xxxx systemd[1]: clamav-freshclam.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
    mars 29 16:09:46 xxxx systemd[1]: clamav-freshclam.service: Failed with result 'exit-code'.
    root@glpi:~#
    Jusqu'ici, c'est normal. Mais quand je lance mon script, dans le mail que je reçois j'ai ca :

    ● clamav-freshclam.service - ClamAV virus database updater
    Loaded: loaded (/lib/systemd/system/clamav-freshclam.service; enabled; vendor preset: enabled)
    Active: active (running) since Mon 2021-03-29 15:59:07 CEST; 6ms ago
    Docs: man:freshclam(1)
    man:freshclam.conf(5)
    https://www.clamav.net/documents Main PID: 12798 (freshclam)
    Tasks: 1 (limit: 4700)
    Memory: 936.0K
    CGroup: /system.slice/clamav-freshclam.service
    └─12798 /usr/bin/freshclam -d --foreground=true
    Ce qui est tout bonnement impossible car le fichier conf du service a toujours ses paramètres erronés

    Donc ma question est : ou est ce que je me suis trompé dans le script ? Est ce que l'un de vous peut m'éclairer svp ?

    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
    #!/bin/bash
     
    touch /tmp/verif_services /tmp/services_failed /tmp/mail
    cd /tmp
     
    VERIF="/tmp/verif_services";
    FAILED="/tmp/services_failed";
    MAIL="/tmp/mail";
    HOSTNAME=$(hostname)
     
    systemctl --type=service | grep failed > $VERIF
     
    if [ -s $VERIF ]
    then
            cut -d " " -f2 $VERIF > $FAILED
    fi
     
    echo "ATTENTION SERVICE(S) EN ETAT FAILED" >> "$MAIL";
    echo " " >> "$MAIL";
    echo " " >> "$MAIL";
    echo "LE(S) SERVICE(S) SUIVANT(S) EST(SONT) EN ETAT FAILED SUR LE SERVEUR" $HOSTNAME >> "$MAIL";
    echo " " >> "$MAIL";
    cat $FAILED >> "$MAIL";
    echo " " >> "$MAIL";
    echo "TENTATIVE DE RELANCE AUTOMATIQUE DU(DES) SERVICES" >> "$MAIL";
    echo " " >> "$MAIL";
    echo " " >> "$MAIL";
     
    for service in $(cat $FAILED)
    do
            systemctl restart $service;
            echo "LE SERVICE" $service "A ETE RELANCE" >> "$MAIL";
            echo " " >> "$MAIL";
            echo " " >> "$MAIL";
            echo "VERIFIEZ L'ETAT DU SERVICE CI-DESSOUS" >> "$MAIL";
            echo " " >> "$MAIL";
            echo " " >> "$MAIL";
            systemctl status $service >> "$MAIL";
            echo " " >> "$MAIL";
            echo " " >> "$MAIL";
            echo "SI TOUJOURS EN FAILED, IL FAUT INTERVENIR SUR LE SERVEUR " >> "$MAIL";
    done
     
    cat $MAIL | msmtp prenom.nom@monentreprise.fr;
    rm $VERIF $FAILED $MAIL

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 284
    Points : 12 739
    Points
    12 739
    Par défaut
    Bonjour et bienvenue,

    Les messages d'erreur sorte en principe sur la sortie d'erreur et non sur la sortie standard...

    Ton problème vient peut-être de là.
    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    bonsoir disedorgue,
    j'ai testé ta piste mais lorsque je remplace >> par 2>> sur la ligne 38, il n'y a plus rien dans le mail

    j'ai donc restauré le script et j'ai changé la commande systemctl par la commande service (mais en dur histoire ne pas être bloqué par les variables) et j'obtiens toujours le même résultat --> il voit le service actif MAIS au niveau de l'heure, c'est resté à ~16h00 (cf ci dessous)

    ● clamav-freshclam.service - ClamAV virus database updater
    Loaded: loaded (/lib/systemd/system/clamav-freshclam.service; enabled; vendor preset: enabled)
    Active: active (running) since Mon 2021-03-29 15:59:07 CEST; 6ms ago
    Docs: man:freshclam(1)
    man:freshclam.conf(5)
    https://www.clamav.net/documents Main PID: 12798 (freshclam)
    Tasks: 1 (limit: 4700)
    Memory: 936.0K
    CGroup: /system.slice/clamav-freshclam.service
    └─12798 /usr/bin/freshclam -d --foreground=true

    mars 29 15:59:07 glpi systemd[1]: Started ClamAV virus database updater

    edit : mauvaise piste pour l'heure, je n'avais pas lu tout le message, il le voit active depuis 15h59

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    J'ai continué de chercher.
    J'ai testé avec la commande systemctl is-failed. Quand je la saisie dans la console, j'ai bien un retour en "failed" mais dans le mail résultat du script, il est en "active".
    je vais devenir chèvre

  5. #5
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 284
    Points : 12 739
    Points
    12 739
    Par défaut
    Sur les lignes ou tu as besoin de redirigé à la fois l'erreur et la standard, il faut redirigé comme ceci: commande >>fichier 2>&1 .
    Cordialement.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    J'ai modifié la ligne 38 comme tu me l'as indiqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    systemctl is-failed $service >> "$MAIL" 2>&1;
    mais il voit toujours le service actif

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Solution trouvée
    Bon j’ai finalement trouvé. J’ai remplacé la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    systemctl status $service >> "$MAIL";
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if [ $(ps | grep -v grep | grep $service | wc -l) -gt 0 ]
    then
    echo "$service is running!!!" >> "$MAIL";
    else
    echo " $service is not running!!! " >> "$MAIL";
    fi
    Je cloture. Merci

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    failedUnits=/tmp/fail
    SYSTEMD_COLORS=0 systemctl list-units --state=failed -no-pager --no-legend | cut -d ' ' -f2 >"$failedUnits"
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Est ce que tu peux m’expliquer un peu ?
    Je débute 😉

  10. #10
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    j'ai corrigé /:tmp/fail : bien sûr, les : sont une coquille.

    qu'est-ce que tu ne comprends pas, qui ne trouve pas de réponse dans le man ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    désolé pour la réponse tardive.
    j'ai en effet regardé le man.

    je ne comprenais pas les : mais tu as rectifié. Je me posais la question sur le SYSTEM_COLORS=0 et google fut mon ami.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [12c] Commande Unix STRINGS et données non cryptées : pas bon du tout
    Par Ikebukuro dans le forum Administration
    Réponses: 9
    Dernier message: 05/12/2018, 19h14
  2. [SHELL] Connexion SSH pour vérification service
    Par GarsDuCalvados dans le forum Linux
    Réponses: 2
    Dernier message: 21/01/2011, 23h09
  3. Réponses: 1
    Dernier message: 02/04/2010, 13h40
  4. Réponses: 7
    Dernier message: 28/04/2009, 16h05
  5. Cherche un script de service météo pour la météo régionale
    Par Invité(e) dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 29/05/2007, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo