ansible-roles/nagios-nrpe/files/plugins/check_daemon

65 lines
1.5 KiB
Bash
Executable file

#!/bin/sh
usage() {
cat <<EOF
Usage: $0 [OPTIONS] NOM
Valide la présence d'un processus d'après son NOM stocké.
Les options suivantes sont admises :
-s, --sane vérifier que le processus est dans un état sain
-u, --user vérifier que le processus est lancé par un certain user
-U, --uniq vérifier que le processus n'est lancé qu'une seule fois
EOF
}
TEMP=`getopt -o hsUu: --long help,sane,user: -n $0 -- "$@"`
if [ $? != 0 ]; then echo "Terminaison..." >&2; exit 1; fi
eval set -- "$TEMP"
OPT_USER=""
OPT_SANE=0
OPT_UNIQ=0
while true; do
case "$1" in
-u|--user) OPT_USER="$2" ; shift 2 ;;
-U|--uniq) OPT_UNIQ=1; shift ;;
-s|--sane) OPT_SANE=1; shift ;;
-h|--help) usage; exit 0 ;;
--) shift; break ;;
*) echo "Erreur interne"; exit -1 ;;
esac
done
ID_USER="`getent passwd $OPT_USER | cut -d: -f3`"
if [ $# -ne 1 ]; then usage; exit -1; fi
NAME="$1"
STATUS=0
RES="`ps n -eo pid,user,state,command | egrep "$NAME" | egrep "$ID_USER " | egrep -v "grep|$0"`"
P_USER="` echo $RES | cut -d' ' -f2`"
P_STATE="` echo $RES | cut -d' ' -f3`"
if [ -n "$RES" ]; then
if [ -n "$OPT_USER" ]; then
if [ "`getent passwd $OPT_USER`" != "`getent passwd $P_USER`" ]; then
STATUS=2
fi
fi
if [ $OPT_SANE -eq 1 -a "$P_STATE" = "Z" ]; then
STATUS=2
fi
if [ $OPT_UNIQ -eq 1 ]; then
if [ `echo -e "$RES" |wc -l` -gt 1 ]; then
STATUS=2
fi
fi
else
STATUS=2
fi
[ $STATUS -eq 0 ] && echo "$NAME running"
exit $STATUS