Ajouter un service à une machine existante dans Nagios Core

Un script pour ajouter un service tel que plusieurs serveur http sur une machine.

#!/bin/bash

# Ajout de service à un client existant sur le serveur Nagios
GREEN="\033[0;32m"
RED='\033[0;31m'
NC="\033[0m" # No Color

echo "Auteur : Tommy Gingras"
echo "Date : 2017-07-21"
echo "But : Ajout de service à un client existant sur le serveur Nagios."
echo "Version : 1.0.0"

read -p "Entrer le nom de l'hôte : " modhost
lpath=/usr/local/nagios/etc/servers/$modhost.cfg
if [ ! -f /usr/local/nagios/etc/servers/$modhost.cfg  ]; then
    echo -e "${RED}Fichier de configuration inexistant.${NC}"
    exit
else
    echo
    echo -e "${GREEN}Les services de base${NC}"
    echo
    
    if grep -q "PING" $lpath
    then
        echo -e "Le service PING est déjà présent."
    else
        read -p "Voulez-vous vérifier le ping (y/n)[n] " q
        if [ "$q" == "y" ]
        then
            echo "define service{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    use generic-service" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    host_name $modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    service_description PING" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    check_command check_ping!100.0,20%!500.0,60%" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            q=""
        fi
    fi
    
    if grep -q "SSH" $lpath
    then
        echo -e "Le service SSH est déjà présent."
    else
        read -p "Voulez-vous vérifier le service SSH (y/n)[n] " q
        if [ "$q" == "y" ]
        then
            read -p "Quel est le port SSH [22] " portssh
            if [ "$portssh" != "" ]
            then
                echo "define command{" >> /usr/local/nagios/etc/servers/$modhost.cfg
                echo "    command_name check_ssh_$portssh_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
                echo "    command_line \$USER1\$/check_ssh -p $portssh" >> /usr/local/nagios/etc/servers/$modhost.cfg
                echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
                variable="_$portssh_$modhost"
            fi
            echo "define service{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    use generic-service" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    host_name $modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    service_description SSH" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    check_command check_ssh$variable" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            q=""
        fi
    fi
    
    if grep -q "USERS" $lpath 
    then
        echo -e "Le service USERS est déjà présent."
    else
        read -p "Voulez-vous vérifier le service users (y/n)[n] " q
        if [ "$q" == "y" ]
        then
            echo "define command{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_name check_users_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_line \$USER1\$/check_users -w1 -c2" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "define service{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    use generic-service" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    host_name $modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    service_description USERS" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    check_command check_users_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            q=""
        fi
    fi
    
    if grep -q "LOAD" $lpath
    then
        echo -e "Le service LOAD est déjà présent."
    else
        read -p "Voulez-vous vérifier la charge du système (y/n)[n] " q
        if [ "$q" == "y" ]
        then
            echo "define command{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_name check_load_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_line \$USER1\$/check_load -w 15,10,5 -c 30,25,20" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "define service{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    use generic-service" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    host_name $modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    service_description LOAD" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    check_command check_load_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            q=""
        fi
    fi
    
    if grep -q "ROOT" $lpath
    then
        echo -e "Le service ROOT est déjà présent."
    else
        read -p "Voulez-vous vérifier la partition système / (y/n)[n] " q
        if [ "$q" == "y" ]
        then
            echo "define command{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_name check_disk_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_line \$USER1\$/check_disk -w 20% -c 10% -p /" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "define service{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    use generic-service" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    host_name $modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    service_description ROOT" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    check_command check_disk_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            q=""
        fi
    fi
    
    if grep -q "SWAP" $lpath
    then
        echo -e "Le service SWAP est déjà présent."
    else
        read -p "Voulez-vous vérifier le swap (y/n)[n] " q
        if [ "$q" == "y" ]
        then
            echo "define command{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_name check_swap_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_line \$USER1\$/check_swap -a -w 50% -c 10%" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "define service{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    use generic-service" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    host_name $modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    service_description SWAP" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    check_command check_swap_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            q=""
        fi
    fi

    if grep -q "PROCESS" $lpath
    then
        echo -e "Le service PROCESS est déjà présent."
    else
        read -p "Voulez-vous vérifier tous les processus (y/n)[n] " q
        if [ "$q" == "y" ]
        then
            echo "define command{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_name check_procs_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_line \$USER1\$/check_procs -w 150 -c 200" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "define service{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    use generic-service" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    host_name $modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    service_description PROCESS" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    check_command check_procs_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            q=""
        fi
    fi
    
    echo 
    echo -e "${GREEN}Serveur Web${NC}"
    echo 

    read -p "Voulez-vous vérifier le service web HTTP (y/n)[n] " q

    if [ "$q" == "y" ]
    then
        err=0
        read -p "Quel est le port d'écoute du serveur web [80]" port
        if [ "$port" == "" ]
        then
            if grep -q "check_http" $lpath
            then
                echo -e "${RED}Le port 80 existe déjà. Alors il ne peut pas être ajouté!${NC}"
                err=1
            fi
        else
            if grep -q "check_http_$port" $lpath
            then
                echo -e "${RED}Le port $port existe déjà. Alors il ne peut pas être ajouté!${NC}"
                err=1
            else
                echo "define command{" >> /usr/local/nagios/etc/servers/$modhost.cfg
                echo "    command_name check_http_$port_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
                echo "    command_line \$USER1\$/check_http -I \$HOSTADDRESS\$ \$ARG1\$-p $port" >> /usr/local/nagios/etc/servers/$modhost.cfg
                echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg    
            fi
        fi
        if [ $err -eq 0 ]
        then
            echo "define service{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    use generic-service" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    host_name $modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            if [ "$port" == "" ]
            then
                echo "    service_description HTTP" >> /usr/local/nagios/etc/servers/$modhost.cfg
                echo "    check_command check_http" >> /usr/local/nagios/etc/servers/$modhost.cfg
            else
                echo "    service_description HTTP_$port" >> /usr/local/nagios/etc/servers/$modhost.cfg
                echo "    check_command check_http_$port_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            fi            
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
        fi
        q=""
    fi

    if grep -q "HTTPS" $lpath
    then
        echo -e "Le service HTTPS est déjà présent."
    else
        read -p "Voulez-vous vérifier le service web HTTPS (y/n)[n]" q
        if [ "$q" == "y" ]
        then
            echo "define command{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_name check_https_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_line \$USER1\$/check_http -S -I \$HOSTADDRESS\$ \$ARG1\$" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "define service{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    use generic-service" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    host_name $modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    service_description HTTPS" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    check_command check_https_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            q=""
        fi
    fi

    echo
    echo -e "${GREEN}Serveur base de données${NC}"
    echo

    if grep -q "MONGODB" $lpath
    then
        echo -e "Le service MONGODB est déjà présent."
    else
        read -p "Voulez-vous vérifier le service MongoDB (y/n)[n]" q
        if [ "$q" == "y" ]
        then
            echo "define command{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_name check_mongodb_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    command_line \$USER1\$/check_tcp -H \$HOSTADDRESS\$ -p 27017" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "define service{" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    use generic-service" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    host_name $modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    service_description MONGODB" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "    check_command check_mongodb_$modhost" >> /usr/local/nagios/etc/servers/$modhost.cfg
            echo "}" >> /usr/local/nagios/etc/servers/$modhost.cfg
            q=""
        fi
    fi
fi

echo -e "${GREEN}Veuillez attendre que le service redémarre pour appliquer les changements.${NC}"
service nagios stop
service nagios start

echo -e "${GREEN}La modification de l'hôte $modhost a été effectué.${NC}"

 

Laisser un commentaire