NRPE: Le script utilisateur ne peut pas lire l'entrée, mais le script fonctionne correctement, que peut-il être?
J'ai écrit un chèque de script Nagios, Qui obtient le chemin comme un argument et des vérifications:
Si le chemin est défini
S'il est disponible, appuyez sur le fichier sur le chemin.
Si le catalogue de points de montage est vide
Équipe B.
Ressemble à ça:
Comme vous pouvez le constater, lors du démarrage de la commande à partir de la machine suivie à l'aide de l'utilisateur Nagios Le résultat est comme prévu, mais quand je gère l'équipe en utilisant
avec serveur Nagios Il retourne «NRPE: Unable to read input».
Autres choses que j'ai essayées:
Fournir le chemin dans le script lui-même, il n'est donc pas nécessaire de transférer un argument à travers NRPE, Mais obtenez le même résultat.
Assurer le chemin à l'intérieur
, Évitez également de transférer des arguments, mais en vain.
J'ai édité
et a tourné le débogage, puis pendant l'opération
et envoyer une commande distante du serveur Nagios, Je vois ces deux lignes dans le journal:
Mais je n'ai pas la possibilité de savoir quels symboles illégaux c'était ...
Pour le paramètre Don't_blame_nrpe Valeur installée 1. Le script ressemble à ceci:
Quelle pourrait être la raison de l'apparition d'une erreur «NRPE: Ne peut pas être lu entrée "?
Éditer # 1:
Éditer # 2: SSL Désactivé sur le serveur Nagios, Et sur tous les clients ...
Merci d'avance
Si le chemin est défini
S'il est disponible, appuyez sur le fichier sur le chemin.
Si le catalogue de points de montage est vide
[root@hadoop-nn1 mass1]# su - nagios
[nagios@hadoop-nn1 ~]$ /usr/lib64/nagios/plugins/check_nfsmount.sh /mass2/hpfiles/
Warning: /mass2/hpfiles/ is mounted but directory is empty!
[nagios@hadoop-nn1 ~]$ /usr/lib64/nagios/plugins/check_nfsmount.sh /mass1/hpfiles/
Warning: /mass1/hpfiles/ is MOUNTED properly but not writeable for user nagios
[nagios@hadoop-nn1 ~]$ /usr/lib64/nagios/plugins/check_nfsmount.sh /mass1/hp_offline/
Ok: /mass1/hp_offline/ is MOUNTED properly and writeable for user nagios
[nagios@hadoop-nn1 ~]$
Équipe B.
/etc/nagios/nrpe.cfg
Ressemble à ça:
command[check_nfsmounts]=/usr/lib64/nagios/plugins/check_nfsmounts.sh $ARG1$
Comme vous pouvez le constater, lors du démarrage de la commande à partir de la machine suivie à l'aide de l'utilisateur Nagios Le résultat est comme prévu, mais quand je gère l'équipe en utilisant
nrpe
avec serveur Nagios Il retourne «NRPE: Unable to read input».
Autres choses que j'ai essayées:
Fournir le chemin dans le script lui-même, il n'est donc pas nécessaire de transférer un argument à travers NRPE, Mais obtenez le même résultat.
Assurer le chemin à l'intérieur
nrpe.cfg
, Évitez également de transférer des arguments, mais en vain.
J'ai édité
nrpe.cfg
et a tourné le débogage, puis pendant l'opération
tail -f /var/log/messages |grep nrpe
et envoyer une commande distante du serveur Nagios, Je vois ces deux lignes dans le journal:
Dec 15 04:09:44 hadoop-nn1 nrpe[9354]: Error: Request contained illegal metachars!
Dec 15 04:09:44 hadoop-nn1 nrpe[9354]: Client request was invalid, bailing out...
Mais je n'ai pas la possibilité de savoir quels symboles illégaux c'était ...
Pour le paramètre Don't_blame_nrpe Valeur installée 1. Le script ressemble à ceci:
#!/bin/bash
# This script checks if the provided mount point is mounted and writeable.
# Script by Itai Ganot
if [ -z "$1" ]; then
echo "Usage: $(basename $0) PATH_TO_CHECK"
echo "Available PATH's: /mass1/hp_offline -- /mass1/hpfiles -- /mass2/hpfiles"
exit 3
fi
DF="/bin/df -t nfs"
GREP="/bin/grep -q"
AWK="/bin/awk"
TOUCH="/bin/touch"
LS="/bin/ls"
WC="/usr/bin/wc"
TESTFILE="test.dat"
USER=$(whoami)
NFS_MOUNT="$1"
$DF | $GREP "$NFS_MOUNT" | $AWK '{print $5}'
if [ $? = 0 ]; then
MOUNTED="yes"
else
MOUNTED="no"
fi
if [[ "$MOUNTED" = "yes" ]] && [[ $($LS -A "$NFS_MOUNT" | "$WC" -l) -gt "1" ]]; then
"$TOUCH" "$NFS_MOUNT""$TESTFILE" 2>/dev/null
if [ $? = 0 ]; then
TOUCHED="yes"
else
TOUCHED="no"
fi
elif [[ "$MOUNTED" = "yes" ]] && [[ $($LS -A "$NFS_MOUNT" | "$WC" -l) -eq "0" ]]; then
TXT="$NFS_MOUNT is mounted but directory is empty!"
RETVAL="1"
STATUS="Warning"
elif [ "$MOUNTED" = "no" ]; then
TXT="$NFS_MOUNT not MOUNTED"
RETVAL="2"
STATUS="Critical"
fi
if [[ "$TOUCHED" = "yes" ]]; then
TXT="$NFS_MOUNT is MOUNTED properly and writeable for user $USER"
RETVAL="0"
STATUS="Ok"
elif [[ "$TOUCHED" = "no" ]] || [[ "$MOUNTED" = "no" ]]; then
TXT="$NFS_MOUNT is MOUNTED properly but not writeable for user $USER"
RETVAL="1"
STATUS="Warning"
fi
echo "$STATUS: $TXT"
exit $RETVAL
Quelle pourrait être la raison de l'apparition d'une erreur «NRPE: Ne peut pas être lu entrée "?
Éditer # 1:
[root@mon1 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.39.21.211 -c check_nfsmounts -a /mass1/hp_offline
NRPE: Unable to read output
[root@mon1 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.39.21.211 -c check_nfsmounts -a '/mass1/hp_offline'
NRPE: Unable to read output
[root@mon1 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.39.21.211 -c check_nfsmounts /mass1/hp_offline
NRPE: Unable to read output
[root@mon1 ~]#
Éditer # 2: SSL Désactivé sur le serveur Nagios, Et sur tous les clients ...
[root@mon1 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.39.21.211 -n -c check_nfsmounts '/mass1/hp_offline'
CHECK_NRPE: Error receiving data from daemon.
[root@mon1 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.39.21.211 -n -c check_nfsmounts -a '/mass1/hp_offline'
CHECK_NRPE: Error receiving data from daemon.
Merci d'avance
Aucun résultat connexe trouvé
Invité:
Pour répondre aux questions, connectez-vous ou registre
1 réponses
Giselle
Confirmation de:
, Mais celui que vous testez de la ligne de commande,
. Vous avez confirmé que cette incohérence est une source de problème - Et ne vous inquiétez pas, cela peut arriver à tous d'entre nous. La deuxième paire des yeux est toujours utile pour attraper ces petits Gremlinovs très ennuyeux!