【发布时间】:2013-11-24 06:18:28
【问题描述】:
我正在尝试制作一个简单的 shell 脚本插件来通过 nagios 监视日志文件中特定单词的日志文件。但是当我尝试使用 nagios 运行脚本时,它会返回错误的结果。它总是在最后一行执行脚本并忽略所有其他命令。但是当我尝试在终端上运行脚本时,脚本运行准确。请任何人帮助我处理脚本。
!/bin/bash
word1="flag"
word2="subscriber_master"
word3="成功"
word4="Queryyyyselect"
word5="标准输出"
word6="CALLSTART"
word7="HFA"
word8="SVA"
word9="SCA"
word10="SLBSA"
word11="SFA"
word12="EMVA"
word13="EMC"
word14="EMLBSA"
word15="EMFA"
word16="DEACT"
word17="MSISDN"
word18="添加命中"
word19="BADDI"
word20="EmergencyRetry"
word21="USSDR"
word22="ExtendedEmergencyRetry"
word23="删除音频"
word24="IVREmergencyLogger"
word25="VAACTION"
word26="PRS"
word27="YNO"
filename="/root/Desktop/server.log"
ECHO="/bin/echo"
GREP="/bin/egrep"
TAIL="/usr/bin/tailf"
returnStateOK=0
returnStateWarning=1
returnStateCritical=2
returnStateUnknown=3
a=timeout 2 "$TAIL" "$filename"
{
对于 $word{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" 找到 "
退出=$returnSTateOK
fi
如果 [[ $( "$ECHO" "$a"|"$GREP" -wo "$word") != "$word" ]]
然后
"$ECHO" "警告:未找到"$word""
exit=$returnStateCritical
fi
完成
}
【问题讨论】:
-
请重新格式化代码。删除不必要的空行。使用 Ctrl + K 或按钮栏中的
{}按钮将行格式化为代码块。