Check Nagios pour Samba

J’avais besoin de monitorer un serveur samba à distance (via ssh). Voilà une solution quick and dirty.

La machine à monitorer est milkpan.

Sur milkpan

Créer un script check_smb dans /usr/local/sbin sur milkpan :

#!/bin/sh
#set -x
# Nagios states
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

# Variables for end
RESULT=""
EXIT_STATUS=${STATE_UNKNOWN}

PROGNAME=`/usr/bin/basename $0`
SMBCLIENT="/usr/bin/smbclient"
GREP="/bin/grep"

USER=''
PASS=''
DOMAIN=WORKGROUP

# -- function: end script with output
endscript () {   
        echo ${RESULT}
        exit ${EXIT_STATUS}
}

# -- function: usage of script
usage () {
        echo "\
Nagios plugin to check if user can authenticate to domain

Usage:
        ${PROGNAME} -H <host> -U <username> -P <password>
        ${PROGNAME} --help
"
}

while [ -n "$1" ] # true if first argument is non-null
do
        case $1 in
                --help | -h )
                        usage
                        exit ${STATE_OK};;
                -H )
                        shift
                        HOST=$1;;
                -U )
                        shift
                        USER=$1;;
                -P )
                        shift
                        PASS=$1;;
                * )
                        usage
                        exit ${STATE_UNKNOWN};;
        esac
        shift # if there is no shift, script will continue with host as null
done

if [ "$HOST" = "" -o "$USER" = "" -o "$PASS" = "" ]; then
        usage
        RESULT="Undefined parameter(s)";
        EXIT_STATUS=${STATE_UNKNOWN}
        endscript
fi

OUTPUT=`${SMBCLIENT} //${HOST}/homes -c "pwd" -U ${USER}%${PASS} -W ${DOMAIN}  2>&1 |${GREP} Domain=`
if [ "$?" -eq "0" ]
        then
                RESULT="OK Authentication successful on ${OUTPUT}"
                EXIT_STATUS=${STATE_OK}
        else
                RESULT="Authentication failed on ${DOMAIN}: ${OUTPUT}"
                EXIT_STATUS=${STATE_CRITICAL}
fi

endscript

Ce script est basé sur http://www.googlux.com/nagios_smbcheck.html

Définir le mot de passe pour nobody :

sudo smbpasswd nobody

Définir les droits pour ce script :

sudo chmod 755 /usr/local/sbin/check_smb

Sur la machine qui héberge le Nagios

Ajouter une commande :

define command {
        command_name    check_ssh_smb
        command_line    $USER1$/check_by_ssh -H $HOSTADDRESS$ -l $USER10$ -i ~/.ssh/id_rsa -C "/usr/local/sbin/check_smb -H $ARG1$ -U $ARG2$ -P $ARG3$"
}

Et un service qui utilise cette commande :

define service {
        service_description     samba
        use                     generic-service
        host_name               milkpan
        check_command           check_ssh_smb!10.8.0.1!nobody!MyPassW0rd
}

Les paramètres passés sont :

  • 10.8.0.1 : le sous-réseau sur lequel écoute le samba sur cette machine
  • nobody : l’utilisateur qui se connecte
  • MyPassW0rd : son mot de passe

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *