我正在尝试创建一个简单的shell脚本插件,通过nagios监视日志文件中日志文件中的特定单词。但是当我尝试使用nagios运行脚本时,它返回错误的结果。总是说明他最后一行脚本并忽略所有其他命令。但是当我尝试在终端上运行脚本时,脚本工作正常。关于剧本,请任何人帮助我。
word1 =“flag”
word2 =“subscriber_master”
word3 =“成功”
word4 = “Queryyyyselect”
的word5 = “STDOUT”
word6 = “CALLSTART”
word7 = “HFA”
word8 = “SVA”
word9 = “SCA”
word10 = “SLBSA”
WORD11 = “SFA”
word12 = “EMVA”
word13 = “EMCA”
word14 = “EMLBSA”
word15 = “EMFA”
WORD16 = “DEACT”
word17 = “MSISDN”
word18 =“ADD HIT”
word19 = “巴德迪”
word20 = “EmergencyRetry”
word21 = “USSDR”
word22 = “ExtendedEmergencyRetry”
word23 =“DELET AUDIO”
word24 = “IVREmergencyLogger”
word25 = “VAACTION”
word26 = “PRS”
word27 = “YNO”
文件名= “/根/桌面/ server.log中”
ECHO = “/斌/回声”
GREP = “/斌/ egrep的”
TAIL = “的/ usr /斌/ tailf”
returnStateOK = 0
returnStateWarning = 1
returnStateCritical = 2
returnStateUnknown = 3
A = timeout 2 "$TAIL" "$filename"
{
单词$ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 ,22,23,24,25,26,27}
做
如果[[$(“$ ECHO”“$ a”|“$ GREP”-wo“$ word”)=〜“$ word”]]
然后
“$ ECHO”“OK:”$ word“found”
出口= $ returnSTateOK
fi
如果[[$(“$ ECHO”“$ a”|“$ GREP”-wo“$ word”)!=“$ word”]]
然后
“$ ECHO”“警告:”$ word“not found”
出口= $ returnStateCritical
fi
完成
}
答案 0 :(得分:0)
根据经验,我的猜测是这是一个权限问题:nagios用户(插件/脚本正在运行)没有读取文件的权限。您可以修复文件和目录权限(如果可能,可以登录到其他路径?)或使用sudo运行脚本。
答案 1 :(得分:0)
值得尝试:看起来你在第一个条件下错误拼写了OK返回变量。
exit=$returnSTateOK