Voici un petit script utilisant Centreon-Clapi vous permettant de vérifier vos commandes de vérification associées à vos services. Ce script va vérifier tous les héritages des modèles de services et d’hôtes associés à votre recherche. Ensuite, celui-ci va récupérer toutes les macros personnalisées et arguments. Pour terminer, le script effectuera une substitution des noms de macros ou d’arguments par leurs valeurs correspondantes afin d’afficher une ligne de commande qui pourra être exécutée. Attention, ce script ne fonctionne qu’avec la dernière version de Centreon-Clapi 1.8.0. Dernière version 1.02 permettant de vérifier des nom de service comportant un espace et quelques corrections mineures.
1 Principe du script verif_cmd.sh
Organigramme simplifié du script verif_cmd.sh
2 Le script verif_cmd.sh
Voici le script verif_cmd.sh dans son intégralité. Attention, modifier le chemin de la variable CLAPI_DIR en fonction de votre installation du module Centreon-Clapi.
#!/bin/bash
# verify_cmd.sh
# version 1.02
# 02/12/2015
# verify commande for service
# $1 name of admin
# $2 password admin
# $3 host name
# $4 service name
# $5 view detail parameters
# version 1.0.1
# bug host_snmp_version for host
# version 1.0.2
# bug with space in name service template
if [ $# -lt 4 ]
then
echo Usage: $0 admin password \ \ \<[-f\|--full] view detail\> 1>&2
echo This program verify configuration service 1>&2
echo and print command without macro and argument 1>&2
exit 1
fi
VERT="\\033[1;32m"
NORMAL="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
BLANCLAIR="\\033[1;08m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
# Parameter
CLAPI_DIR=/usr/share/centreon/www/modules/centreon-clapi/core
USER_CENTREON=$1
PWD_CENTREON=$2
FILE_CONF=/tmp/export_host_clapi.txt
FILE_PARAM_CONF_STPL=/tmp/tempSTPL.parm
FILE_PARAM_CONF_HTPL=/tmp/tempHTPL.parm
FILE_PARAM_CONF_HOST=/tmp/tempHOST.parm
FILE_PARAM_CONF_SERVICE=/tmp/tempSERVICEparm
P_check_period=""
P_check_command=""
P_check_command_arguments=""
P_notification_period=""
P_service_is_volatile=0
P_service_max_check_attempts=0
P_service_normal_check_interval=0
P_service_retry_check_interval=0
P_service_active_checks_enabled=0
P_service_passive_checks_enabled=0
P_service_parallelize_check=0
P_service_obsess_over_service=0
P_service_check_freshness=0
P_service_event_handler_enabled=0
P_service_flap_detection_enabled=0
P_service_process_perf_data=0
P_service_retain_status_information=0
P_service_retain_nonstatus_information=0
P_service_notification_interval=0
P_service_notification_options=""
P_service_notifications_enabled=0
P_contact_additive_inheritance=0
P_cg_additive_inheritance=0
P_service_first_notification_delay=0
P_service_locked=0
P_service_register=0
P_service_activate=0
P_notes_url=""
declare -A ARRAY_MACRO
declare -A PILE
BP=100
SP=$BP
PILE_HTPL=
P_cmd=""
POLLER=""
H_hostaddress=""
H_check_command=""
H_notification_period=""
H_host_max_check_attempts=0
H_host_check_interval=0
H_host_retry_check_interval=0
H_host_active_checks_enabled=0
H_host_passive_checks_enabled=0
H_host_checks_enabled=0
H_host_obsess_over_host=0
H_host_check_freshness=0
H_host_event_handler_enabled=0
H_host_flap_detection_enabled=0
H_host_process_perf_data=0
H_host_retain_status_information=0
H_host_retain_nonstatus_information=0
H_host_notification_interval=0
H_host_notification_options=""
H_host_first_notification_delay=0
H_host_notifications_enabled=0
H_contact_additive_inheritance=0
H_cg_additive_inheritance=0
H_host_snmp_community=""
H_host_snmp_version=""
H_host_location=0
H_host_register=0
H_host_activate=0
H_notes_url=""
function insert_pile()
{
if [ -z "$1" ]
then
return
fi
let "SP -= 1"
PILE[$SP]=$1
return
}
function retrieve_pile()
{
PILE_HTPL=
if [ "$SP" -eq "$BP" ]
then
return
fi
PILE_HTPL=${PILE[$SP]}
let "SP += 1"
return
}
function find_cmd ()
{
local RESULT=$($CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o cmd -a export | grep -E -w "CMD;ADD;$1" | head -n 1 | cut -d ";" -f5)
if [ -n "$RESULT" ]
then
P_cmd="$RESULT"
return 0
else
echo "Critical : There is no service command !"
fi
}
function read_htpl_param ()
{
$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o htpl -a export | grep -E -w "$1" > $FILE_PARAM_CONF_HTPL
#lecture param
while read line
do
local PARAM1=`echo $line | cut -d";" -f1 `
local PARAM2=`echo $line | cut -d";" -f2 `
local PARAM3=`echo $line | cut -d";" -f3 `
local PARAM4=`echo $line | cut -d";" -f4 `
local PARAM5=`echo $line | cut -d";" -f5 `
if [ "$PARAM2" == "setparam" ]
then
case "$PARAM4" in
"check_command")H_check_command=$PARAM5;;
"host_active_checks_enabled")H_host_active_checks_enabled=$PARAM5;;
"notification_period")H_notification_period=$PARAM5;;
"host_max_check_attempts")H_host_max_check_attempts=$PARAM5;;
"host_check_interval")H_host_check_interval=$PARAM5;;
"host_retry_check_interval")H_host_retry_check_interval=$PARAM5;;
"host_passive_checks_enabled")H_host_passive_checks_enabled=$PARAM5;;
"host_checks_enabled")H_host_checks_enabled=$PARAM5;;
"host_obsess_over_host")H_host_obsess_over_host=$PARAM5;;
"host_check_freshness")H_host_check_freshness=$PARAM5;;
"host_event_handler_enabled")H_host_event_handler_enabled=$PARAM5;;
"host_flap_detection_enabled")H_host_flap_detection_enabled=$PARAM5;;
"host_process_perf_data")H_host_process_perf_data=$PARAM5;;
"host_retain_status_information")H_host_retain_status_information=$PARAM5;;
"host_retain_nonstatus_information")H_host_retain_nonstatus_information=$PARAM5;;
"host_notification_interval")H_host_notification_interval=$PARAM5;;
"host_notification_options")H_host_notification_options=$PARAM5;;
"host_first_notification_delay")H_host_first_notification_delay=$PARAM5;;
"host_notifications_enabled")H_host_notifications_enabled=$PARAM5;;
"contact_additive_inheritance")H_contact_additive_inheritance=$PARAM5;;
"cg_additive_inheritance")H_cg_additive_inheritance=$PARAM5;;
"host_snmp_community")H_host_snmp_community=$PARAM5;;
# if host_snmp_version = 0 apply template
"host_snmp_version")if [ "$PARAM5" != "0" ]
then
H_host_snmp_version="$PARAM5"
fi
;;
"host_location")H_host_location=$PARAM5;;
"host_register")H_host_register=$PARAM5;;
"host_activate")H_host_activate=$PARAM5;;
"notes_url")H_notes_url=$PARAM5;;
esac
fi
if [ "$PARAM2" == "setmacro" ]
then
ARRAY_MACRO["_HOST${PARAM4}"]=$PARAM5
#verif SNMP
if [ "$PARAM4" == "snmpcommunity" ]
then
H_host_snmp_community=""
fi
if [ "$PARAM4" == "snmpversion" ]
then
H_host_snmp_version=""
fi
fi
done < $FILE_PARAM_CONF_HTPL
}
function read_host_param ()
{
$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o host -a export | grep -E -w "$1" > $FILE_PARAM_CONF_HOST
#lecture poller
while read line
do
local PARAM1=`echo $line | cut -d";" -f1 `
local PARAM2=`echo $line | cut -d";" -f2 `
local PARAM3=`echo $line | cut -d";" -f3 `
local PARAM4=`echo $line | cut -d";" -f4 `
local PARAM5=`echo $line | cut -d";" -f5 `
local PARAM6=`echo $line | cut -d";" -f6 `
local PARAM7=`echo $line | cut -d";" -f7 `
if [ "$PARAM2" == "ADD" ]
then
POLLER=$PARAM7
fi
done < $FILE_PARAM_CONF_HOST
#lecture htpl et ajout pile
echo
echo -e "$BLEU""Hosts templates"
echo -e "###############" "$NORMAL"
while read line
do
local PARAM1=`echo $line | cut -d";" -f1 `
local PARAM2=`echo $line | cut -d";" -f2 `
local PARAM3=`echo $line | cut -d";" -f3 `
local PARAM4=`echo $line | cut -d";" -f4 `
if [ "$PARAM2" == "addtemplate" ]
then
echo $PARAM4
insert_pile "$PARAM4"
fi
done < $FILE_PARAM_CONF_HOST
#lecture param htpl
retrieve_pile
while [ "$PILE_HTPL" != "" ]
do
read_htpl_param $PILE_HTPL
retrieve_pile
done
#lecture param host er hostadress
while read line
do
line=${line//\"/\"}
local PARAM1=`echo $line | cut -d";" -f1 `
local PARAM2=`echo $line | cut -d";" -f2 `
local PARAM3=`echo $line | cut -d";" -f3 `
local PARAM4=`echo $line | cut -d";" -f4 `
local PARAM5=`echo $line | cut -d";" -f5 `
if [ "$PARAM2" == "ADD" ]
then
H_hostaddress=$PARAM5
fi
if [[ "$PARAM2" == "setparam" && "$PARAM3" == "$1" ]]
then
case "$PARAM4" in
"check_command")H_check_command=$PARAM5;;
"host_active_checks_enabled")H_host_active_checks_enabled=$PARAM5;;
"notification_period")H_notification_period=$PARAM5;;
"host_max_check_attempts")H_host_max_check_attempts=$PARAM5;;
"host_check_interval")H_host_check_interval=$PARAM5;;
"host_retry_check_interval")H_host_retry_check_interval=$PARAM5;;
"host_passive_checks_enabled")H_host_passive_checks_enabled=$PARAM5;;
"host_checks_enabled")H_host_checks_enabled=$PARAM5;;
"host_obsess_over_host")H_host_obsess_over_host=$PARAM5;;
"host_check_freshness")H_host_check_freshness=$PARAM5;;
"host_event_handler_enabled")H_host_event_handler_enabled=$PARAM5;;
"host_flap_detection_enabled")H_host_flap_detection_enabled=$PARAM5;;
"host_process_perf_data")H_host_process_perf_data=$PARAM5;;
"host_retain_status_information")H_host_retain_status_information=$PARAM5;;
"host_retain_nonstatus_information")H_host_retain_nonstatus_information=$PARAM5;;
"host_notification_interval")H_host_notification_interval=$PARAM5;;
"host_notification_options")H_host_notification_options=$PARAM5;;
"host_first_notification_delay")H_host_first_notification_delay=$PARAM5;;
"host_notifications_enabled")H_host_notifications_enabled=$PARAM5;;
"contact_additive_inheritance")H_contact_additive_inheritance=$PARAM5;;
"cg_additive_inheritance")H_cg_additive_inheritance=$PARAM5;;
"host_snmp_community")H_host_snmp_community=$PARAM5;;
# if host_snmp_version = 0 apply template
"host_snmp_version") if [ "$PARAM5" != "0" ]
then
H_host_snmp_version="$PARAM5"
fi
;;
"host_location")H_host_location=$PARAM5;;
"host_register")H_host_register=$PARAM5;;
"host_activate")H_host_activate=$PARAM5;;
"notes_url")H_notes_url=$PARAM5;;
esac
fi
if [ "$PARAM2" == "setmacro" ]
then
ARRAY_MACRO["_HOST${PARAM4}"]=$PARAM5
#verif SNMP
if [ "$PARAM4" == "snmpcommunity" ]
then
H_host_snmp_community=""
fi
if [ "$PARAM4" == "snmpversion" ]
then
H_host_snmp_version=""
fi
fi
done < $FILE_PARAM_CONF_HOST
return
}
function read_stpl_param ()
{
$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o stpl -a export | grep -E -w "$1" > $FILE_PARAM_CONF_STPL
while read line
do
line=${line//\"/\"}
local PARAM1=`echo $line | cut -d";" -f1 `
local PARAM2=`echo $line | cut -d";" -f2 `
local PARAM3=`echo $line | cut -d";" -f3 `
local PARAM4=`echo $line | cut -d";" -f4 `
local PARAM5=`echo $line | cut -d";" -f5 `
if [[ "$PARAM2" == "setparam" && "$PARAM3" == "$1" ]]
then
case "$PARAM4" in
"check_period")P_check_period=$PARAM5;;
"check_command")P_check_command=$PARAM5;;
"check_command_arguments")P_check_command_arguments==$PARAM5;;
"notification_period")P_notification_period=$PARAM5;;
"service_is_volatile")P_service_is_volatile=$PARAM5;;
"service_max_check_attempts")P_service_max_check_attempts=$PARAM5;;
"service_normal_check_interval")P_service_normal_check_interval=$PARAM5;;
"service_retry_check_interval")P_service_retry_check_interval=$PARAM5;;
"service_active_checks_enabled")P_service_active_checks_enabled=$PARAM5;;
"service_passive_checks_enabled")P_service_passive_checks_enabled=$PARAM5;;
"service_parallelize_check")P_service_parallelize_check=$PARAM5;;
"service_obsess_over_service")P_service_obsess_over_service=$PARAM5;;
"service_check_freshness")P_service_check_freshness=$PARAM5;;
"service_event_handler_enabled")P_service_event_handler_enabled=$PARAM5;;
"service_flap_detection_enabled")P_service_flap_detection_enabled=$PARAM5;;
"service_process_perf_data")P_service_process_perf_data=$PARAM5;;
"service_retain_status_information")P_service_retain_status_information=$PARAM5;;
"service_retain_nonstatus_information")P_service_retain_nonstatus_information=$PARAM5;;
"service_notification_interval")P_service_notification_interval=$PARAM5;;
"service_notification_options")P_service_notification_options=$PARAM5;;
"service_notifications_enabled")P_service_notifications_enabled=$PARAM5;;
"contact_additive_inheritance")P_contact_additive_inheritance=$PARAM5;;
"cg_additive_inheritance")P_cg_additive_inheritance=$PARAM5;;
"service_first_notification_delay")P_service_first_notification_delay=$PARAM5;;
"service_locked")P_service_locked=$PARAM5;;
"service_register")P_service_register=$PARAM5;;
"service_activate")P_service_activate=$PARAM5;;
"notes_url")P_notes_url=$PARAM5;;
esac
fi
if [ "$PARAM2" == "setmacro" ]
then
ARRAY_MACRO["_SERVICE${PARAM4}"]=$PARAM5
fi
done < $FILE_PARAM_CONF_STPL
return
}
function read_service_param ()
{
$CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o service -a export | grep -E -w "$1" | grep -E -w "$2" > $FILE_PARAM_CONF_SERVICE
while read line
do
line=${line//\"/\"}
local PARAM1=`echo $line | cut -d";" -f1 `
local PARAM2=`echo $line | cut -d";" -f2 `
local PARAM3=`echo $line | cut -d";" -f3 `
local PARAM4=`echo $line | cut -d";" -f4 `
local PARAM5=`echo $line | cut -d";" -f5 `
local PARAM6=`echo $line | cut -d";" -f6 `
if [[ "$PARAM2" == "setparam" && "$PARAM4" == "$2" ]]
then
case "$PARAM5" in
"check_period")P_check_period=$PARAM6;;
"check_command")P_check_command=$PARAM6;;
"check_command_arguments")P_check_command_arguments==$PARAM6;;
"notification_period")P_notification_period=$PARAM6;;
"service_is_volatile")P_service_is_volatile=$PARAM6;;
"service_max_check_attempts")P_service_max_check_attempts=$PARAM6;;
"service_normal_check_interval")P_service_normal_check_interval=$PARAM6;;
"service_retry_check_interval")P_service_retry_check_interval=$PARAM6;;
"service_active_checks_enabled")P_service_active_checks_enabled=$PARAM6;;
"service_passive_checks_enabled")P_service_passive_checks_enabled=$PARAM6;;
"service_parallelize_check")P_service_parallelize_check=$PARAM6;;
"service_obsess_over_service")P_service_obsess_over_service=$PARAM6;;
"service_check_freshness")P_service_check_freshness=$PARAM6;;
"service_event_handler_enabled")P_service_event_handler_enabled=$PARAM6;;
"service_flap_detection_enabled")P_service_flap_detection_enabled=$PARAM6;;
"service_process_perf_data")P_service_process_perf_data=$PARAM6;;
"service_retain_status_information")P_service_retain_status_information=$PARAM6;;
"service_retain_nonstatus_information")P_service_retain_nonstatus_information=$PARAM6;;
"service_notification_interval")P_service_notification_interval=$PARAM6;;
"service_notification_options")P_service_notification_options=$PARAM6;;
"service_notifications_enabled")P_service_notifications_enabled=$PARAM6;;
"contact_additive_inheritance")P_contact_additive_inheritance=$PARAM6;;
"cg_additive_inheritance")P_cg_additive_inheritance=$PARAM6;;
"service_first_notification_delay")P_service_first_notification_delay=$PARAM6;;
"service_locked")P_service_locked=$PARAM6;;
"service_register")P_service_register=$PARAM6;;
"service_activate")P_service_activate=$PARAM6;;
"notes_url")P_notes_url=$PARAM6;;
esac
fi
if [[ "$PARAM2" == "setmacro" && "$PARAM4" == "$2" ]]
then
ARRAY_MACRO["_SERVICE${PARAM5}"]=$PARAM6
fi
done < $FILE_PARAM_CONF_SERVICE
return
}
function read_stpl ()
{
#echo function read_stpl
local RESULT=$($CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o stpl -a export | grep -E -w "$1" | head -n 1 | cut -d ";" -f5)
if [ -n "$RESULT" ]
then
echo $RESULT
read_stpl "$RESULT"
#else
# echo "il n'y a plus modele de service"
fi
read_stpl_param "$1"
return
}
#######################################################################################
#
# PROGRAM
#
#######################################################################################
# READ service
RESULT=$($CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o service -a export | grep -E -w "$3" | grep -E -w "$4" | head -n 1 | cut -d ";" -f5)
if [ -n "$RESULT" ]
then
echo -e "$BLEU""Services templates"
echo -e "##################" "$NORMAL"
echo $RESULT
read_stpl "$RESULT"
# READ host
read_host_param "$3"
if [[ $5 == "-f" || $5 == "--full" ]]
then
echo
echo -e "$BLEU""Read parameter host $3"
echo -e "##################################" "$NORMAL"
echo "check_command "$H_check_command
echo "notification_period "$H_notification_period
echo "host_max_check_attempts "$H_host_max_check_attempts
echo "host_check_interval "$H_host_check_interval
echo "host_retry_check_interval "$H_host_retry_check_interval
echo "host_active_checks_enabled "$H_host_active_checks_enabled
echo "host_passive_checks_enabled "$H_host_passive_checks_enabled
echo "host_checks_enabled "$H_host_checks_enabled
echo "host_obsess_over_host "$H_host_obsess_over_host
echo "host_check_freshness "$H_host_check_freshness
echo "host_event_handler_enabled "$H_host_event_handler_enabled
echo "host_flap_detection_enabled "$H_host_flap_detection_enabled
echo "host_process_perf_data "$H_host_process_perf_data
echo "host_retain_status_information "$H_host_retain_status_information;
echo "host_retain_nonstatus_information "$H_host_retain_nonstatus_information
echo "host_notification_interval "$H_host_notification_interval
echo "host_notification_options "$H_host_notification_options
echo "host_first_notification_delay "$H_host_first_notification_delay
echo "host_notifications_enabled "$H_host_notifications_enabled
echo "contact_additive_inheritance "$H_contact_additive_inheritance
echo "cg_additive_inheritance "$H_cg_additive_inheritance
echo "host_snmp_community "$H_host_snmp_community
echo "host_snmp_version "$H_host_snmp_version
echo "host_register "$H_host_location
echo "host_register "$H_host_register
echo "host_activate "$H_host_activate
echo "notes_url "$H_notes_url
fi
# READ parameter service
read_service_param "$3" "$4"
if [[ $5 == "-f" || $5 == "--full" ]]
then
echo -e "$BLEU""lecture paramètre service $3 $4" "$NORMAL"
echo "check_period "$P_check_period
echo "check_command "$P_check_command
echo "check_command_arguments "$P_check_command_arguments
echo "notification_period "$P_notification_period
echo "service_is_volatile "$P_service_is_volatile
echo "service_max_check_attempts "$P_service_max_check_attempts
echo "service_normal_check_interval "$P_service_normal_check_interval
echo "service_retry_check_interval "$P_service_retry_check_interval
echo "service_active_checks_enabled "$P_service_active_checks_enabled
echo "service_passive_checks_enabled "$P_service_passive_checks_enabled
echo "service_parallelize_check "$P_service_parallelize_check
echo "service_obsess_over_service "$P_service_obsess_over_service
echo "service_check_freshness "$P_service_check_freshness
echo "service_event_handler_enabled "$P_service_event_handler_enabled
echo "service_flap_detection_enabled "$P_service_flap_detection_enabled
echo "service_process_perf_data "$P_service_process_perf_data
echo "service_retain_status_information "$P_service_retain_status_information
echo "service_retain_nonstatus_information "$P_service_retain_nonstatus_information
echo "service_notification_interval "$P_service_notification_interval
echo "service_notification_options "$P_service_notification_options
echo "service_notifications_enabled "$P_service_notifications_enabled
echo "contact_additive_inheritance "$P_contact_additive_inheritance
echo "cg_additive_inheritance "$P_cg_additive_inheritance
echo "service_first_notification_delay "$P_service_first_notification_delay
echo "service_locked "$P_service_locked
echo "service_register"$P_service_register
echo "service_activate"$P_service_activate
echo "notes_url"$P_notes_url
fi
# find command for service
echo $P_check_command
find_cmd $P_check_command
P_cmd1=${P_cmd//\$/}
# verify parameter SNMP
if [ "$H_host_snmp_version" != "" ]
then
P_cmd1=${P_cmd1/_HOSTSNMPVERSION/$H_host_snmp_version}
fi
if [ "$H_host_snmp_community" != "" ]
then
P_cmd1=${P_cmd1/_HOSTSNMPCOMMUNITY/$H_host_snmp_community}
fi
# replace Macro
if [[ $5 == "-f" || $5 == "--full" ]]
then
echo
echo -e "$BLEU""Custom Macros"
echo -e "#############" "$NORMAL"
fi
for elem in ${!ARRAY_MACRO[*]};
do
if [[ $5 == "-f" || $5 == "--full" ]]
then
echo "Nom macro \"\$${elem}\$\" : "${ARRAY_MACRO[${elem}]}
fi
P_cmd1=${P_cmd1/$(echo $elem | tr 'a-z' 'A-Z')/${ARRAY_MACRO[${elem}]}}
done
# replace host address
if [ "$H_hostaddress" != "" ]
then
P_cmd1=${P_cmd1/HOSTADDRESS/$H_hostaddress}
fi
# replace ARG if exist
if [ "$P_check_command_arguments" != "" ]
then
if [[ $5 == "-f" || $5 == "--full" ]]
then
echo
echo -e "$BLEU""Arguments"
echo -e "#########" "$NORMAL"
fi
IFS='!' read -a array <<<"$P_check_command_arguments"
for elem in ${!array[*]}
do
if [[ $5 == "-f" || $5 == "--full" ]]
then
if [ ${elem} != 0 ]
then
echo "ARG${elem} : "${array[${elem}]}
fi
fi
P_cmd1=${P_cmd1/ARG${elem}/${array[${elem}]}}
done
fi
# replace resourcecfg USER1
if [ $(expr match "$P_cmd1" "USER1") == 5 ]
then
RESULT=$($CLAPI_DIR/centreon -u $USER_CENTREON -p $PWD_CENTREON -o resourcecfg -a export | grep -E -w "USER1" | grep -E -w "$POLLER" | head -n 1 | cut -d ";" -f4)
P_cmd1=${P_cmd1//USER1/$RESULT}
fi
# writing command
echo
echo -e "$BLEU""Command"
echo -e "-------------------" "$NORMAL"
echo $P_cmd
echo
echo -e "$BLEU""Command without macro and argument"
echo -e "----------------------------------" "$NORMAL"
echo $P_cmd1
else
echo "there is no services"
fi N’oubliez pas de le rendre exécutable avec cette commande :
chmod +x verif_cmd.sh
3 Utilisation du script
La syntaxe sera la suivante :
verif_cmd.sh <admin centreon> <mot de passe> <host name> <service name> <[-f\|—full] view detail>
Les quatre premiers paramètres sont obligatoires, le cinquième est optionnel. Celui-ci permet d’avoir le détail des paramètres du service et de l’hôte associé. Voici un exemple d’une vérification en mode normal.
./verif_cmd.sh admin password weblamp MySQL_ssh_qcache-hitrate
Services templates
##################
Modele_Srv_MySQL_ssh_qcache-hitrate
Modele_Srv_MySQL_ssh
service-generique-actif
Hosts templates
###############
notification-24x7
generic-host
Linux-WEB
Linux-MySQL
OS-Linux-Debian7
Apps_ServerStatus
Apps_MySQL_ssh
Command
-------------------
$USER1$/check_by_ssh -H $HOSTADDRESS$ -p 22 -l $_SERVICEUSER_SSH$ -t 60 -C "$USER1$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --host=localhost --mode=$_SERVICEMODE$ --username=$_SERVICEUSERNAME$ --password=$_SERVICEPASSWORD$ --warning=$_SERVICEWARNING$ --critical=$_SERVICECRITICAL$ $_SERVICEOPTION$" -E
Command without macro and argument
----------------------------------
/usr/local/plugins/libexec/check_by_ssh -H 172.16.209.51 -p 22 -l centreon-engine -t 60 -C "/usr/local/plugins/libexec/centreon_plugins.pl --plugin=database::mysql::plugin --host=localhost --mode=qcache-hitrate --username=supervision --password=centreon --warning=40: --critical=20: --lookback" -
Et la même commande en mode détaillé.
./verif_cmd.sh admin password weblamp MySQL_ssh_qcache-hitrate -f
Services templates
##################
Modele_Srv_MySQL_ssh_qcache-hitrate
Modele_Srv_MySQL_ssh
service-generique-actif
Hosts templates
###############
notification-24x7
generic-host
Linux-WEB
Linux-MySQL
OS-Linux-Debian7
Apps_ServerStatus
Apps_MySQL_ssh
Read parameter host weblamp
##################################
check_command check_host_alive
notification_period 24x7
host_max_check_attempts 3
host_check_interval 1
host_retry_check_interval 2
host_active_checks_enabled 2
host_passive_checks_enabled 2
host_checks_enabled 2
host_obsess_over_host 2
host_check_freshness 2
host_event_handler_enabled 2
host_flap_detection_enabled 2
host_process_perf_data 2
host_retain_status_information 2
host_retain_nonstatus_information 2
host_notification_interval 0
host_notification_options d,u,r,f,s
host_first_notification_delay 0
host_notifications_enabled 2
contact_additive_inheritance 0
cg_additive_inheritance 0
host_snmp_community public
host_snmp_version 2c
host_register 0
host_register 1
host_activate 1
notes_url /dokuwiki/centreon.php?host=$HOSTNAME$
lecture paramètre service weblamp MySQL_ssh_qcache-hitrate
check_period 24x7
check_command check_by_ssh_plugin_centreon
check_command_arguments
notification_period 24x7
service_is_volatile 2
service_max_check_attempts 2
service_normal_check_interval 1
service_retry_check_interval 1
service_active_checks_enabled 2
service_passive_checks_enabled 2
service_parallelize_check 2
service_obsess_over_service 2
service_check_freshness 2
service_event_handler_enabled 2
service_flap_detection_enabled 2
service_process_perf_data 2
service_retain_status_information 2
service_retain_nonstatus_information 2
service_notification_interval 0
service_notification_options w,u,c,r,f,s
service_notifications_enabled 2
contact_additive_inheritance 0
cg_additive_inheritance 0
service_first_notification_delay 0
service_locked 0
service_register0
service_activate1
notes_url/dokuwiki/centreon.php?host=$HOSTNAME$&srv=$SERVICEDESC$
Custom Macros
#############
Nom macro "$_SERVICEusername$" : supervision
Nom macro "$_SERVICEpassword$" : centreon
Nom macro "$_SERVICEmode$" : qcache-hitrate
Nom macro "$_SERVICEuser_ssh$" : centreon-engine
Nom macro "$_SERVICEoption$" : --lookback
Nom macro "$_SERVICEcritical$" : 20:
Nom macro "$_SERVICEwarning$" : 40:
Nom macro "$_SERVICEplugin$" : database::mysql::plugin
Command
-------------------
$USER1$/check_by_ssh -H $HOSTADDRESS$ -p 22 -l $_SERVICEUSER_SSH$ -t 60 -C "$USER1$/centreon_plugins.pl --plugin=$_SERVICEPLUGIN$ --host=localhost --mode=$_SERVICEMODE$ --username=$_SERVICEUSERNAME$ --password=$_SERVICEPASSWORD$ --warning=$_SERVICEWARNING$ --critical=$_SERVICECRITICAL$ $_SERVICEOPTION$" -E
Command without macro and argument
----------------------------------
/usr/local/plugins/libexec/check_by_ssh -H 172.16.209.51 -p 22 -l centreon-engine -t 60 -C "/usr/local/plugins/libexec/centreon_plugins.pl --plugin=database::mysql::plugin --host=localhost --mode=qcache-hitrate --username=supervision --password=centreon --warning=40: --critical=20: --lookback" -E
Autre test permettant la vérification des macros SNMP liés aux templates d’hôtes.
./verif_cmd.sh admin password Centreon-Server Swap
Services templates
##################
SNMP-Linux-Swap
generic-service
Hosts templates
###############
generic-host
Servers-Linux
Command
-------------------
$USER1$/check_centreon_snmp_remote_storage -H $HOSTADDRESS$ -n -d $ARG1$ -w $ARG2$ -c $ARG3$ -v $_HOSTSNMPVERSION$ -C $_HOSTSNMPCOMMUNITY$
Command without macro and argument
----------------------------------
/usr/lib/nagios/plugins/check_centreon_snmp_remote_storage -H 127.0.0.1 -n -d "Swap Space" -w 80 -c 90 -v 2c -C public
N’hésitez pas à me faire remonter vos remarques ou éventuellement les problèmes que vous rencontrez.
