2017-09-01 88 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

检查'nrpe.cfg'文件,以查找命令名'check_ratify'。 – Jdamian

回答

0

这通常是一个权限问题。如果nrpenagios用户无法访问您要stat的路径,你会得到。我看到你的例子试图访问/root目录,这是只能由超级用户可读下的文件。

所以,我想你是以root身份运行你的本地例子,但远程检查运行为nrpenagios。如果你真的需要访问路径,您必须配置相应的权限。