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

SSH

Tunnel SSH

ssh -N -R port_on_beta:desthost:destport user@beta

Crée un tunnel entre localhost et beta. Ce tunnel créera sur beta un process qui écoutera sur le port port_on_beta et forwardera l’ensemble, via localhost à desthost sur son port destport.

-N ne lance pas de commande (shell)

Exemple :

ssh -N -R 2222:monserveurderriereunfirewall:5432 cat@miaou

Sur miaou :

psql -h localhost -p 2222 -U user madb

Exemple en ssh pur :

ssh -N -R 8888:localhost:22 fred@miaou.thefreecat.org

Sur miaou :

ssh -p 8888 fred@127.0.0.1

Prendre le contrôle d’un pc à distance :

ssh -f -L 5900:localhost:5900 cat@miaou2.internal.thefreecat.org \
        x11vnc -ncache 10 -safer -localhost -nopw -once -display :0 \
        && sleep 2 \
        && vncviewer -encodings tight localhost:0

Référence : http://doc.ubuntu-fr.org/ssh

Backups avec rdiff-backup et backup-ninja

Je viens d’investir dans des supports de backup donc il est temps de les remplir. Je choisis rdiff-backup qui a l’air le système le plus performant et économe en espace disque, couplé à backup-ninja. Je précise, ces outils ne sont que pour Linux. Si vous avez les moyens d’utiliser un système pas libre qui marche moyennement bien (l’art de la litote), vous avez sûrement aussi les moyens de vous payer un système de sauvegarde non-libre qui marche tout aussi moyennement. Si vous êtes malgré tout courageux, rdiff-backup fonctionne sous Windows et vous devriez facilement pouvoir bricoler un script pour sauvegarder ce que vous voulez (et remplacer backupninja). Continuer la lecture