2017-09-01 34 views
-1
#!/usr/bin/env bash 


DEFAULT_WARN_SECONDS=60 
DEFAULT_CRIT_SECONDS=120 


while getopts 'hp:c:w:' option; do 
    case $option in 
     h) help=1;; 
     p) path=$OPTARG;; 
     c) crit=$OPTARG;; 
     w) warn=$OPTARG;; 
    esac 
done 

if [ -n "$help" ] || [ -z "$path" ]; then 
    echo "usage: $0 -p [path (required)] -w [warning threshhold seconds] -c [critical threshhold seconds]" 1>&2 
    exit 4 
elif ! [ -e "$path" ]; then 
    echo "fatal: invalid or unreadable file path provided: $path" 1>&2 
    exit 3 
fi 

if [ -z "$warn" ]; then 
    warn=$DEFAULT_WARN_SECONDS 
fi 
if [ -z "$crit" ]; then 
    crit=$DEFAULT_CRIT_SECONDS 
fi 

seconds=$(($(date +'%s') - $(stat --format='%Y' $path))) 

if [ $seconds -gt $crit ]; then 
    echo "CRITICAL: $path was last modified $seconds seconds ago" 
    exit 1 
elif [ $seconds -gt $warn ]; then 
    echo "WARNING: $path was last modified $seconds seconds ago" 
    exit 2 
else 
    echo "OK: $path was last modified $seconds seconds ago" 
    exit 0 
fi 

私はそれが動作しているローカルホストでスクリプトを実行します。NRPE:出力に読み込むことができません

./check_last -p /root/Ratify/apache-tomcat-ratify/target/ratify.log -w 30 -c 40 
**output:** 
OK: /root/Ratify/apache-tomcat-ratify/target/ratify.log was last modified 24 seconds ago 

私はそれが動作していないリモートサーバーからスクリプトを実行すると:

./check_nrpe -H 00.00.0.00 -c check_ratify 
NRPE: Unable to read output 

ソリューションを提案してください。

+0

コマンド名 'check_ratify'を探すために' nrpe.cfg'ファイルをチェックしてください。 – Jdamian

答えて

0

これは通常、アクセス許可の問題です。 nrpeまたはnagiosユーザーがあなたが試みているパスにstatがアクセスできない場合は、そのパスを取得します。私はあなたの例が/rootディレクトリ下のファイルにアクセスしようとしているのを見ています。これはスーパーユーザーだけが読むことができます。

ローカルのサンプルをrootとして実行していますが、リモートチェックはnrpeまたはnagiosとして実行されていると思います。実際にそのパスにアクセスする必要がある場合は、それに応じてアクセス権を設定する必要があります。

関連する問題