我遇到了一個問題,當我嘗試將我的bash腳本移植到nagios時。腳本正常工作時,我在控制檯上運行,但是當我從Nagios運行它時,我得到msg「(null)」 - 在Nagios的調試日誌我看到它解析劇本很好,但它返回的錯誤味精..Nagios插件不工作
我不是很擅長腳本所以我想我會需要一些幫助
的目標該腳本將檢查某些服務器的* .ears版本,並對它們進行md5比較,以查看該版本是否匹配。 要做到這一點,我有這些服務器上的JSON打印* .ear和他的MD5的名稱。
so ..腳本的第一部分從curl獲取該信息,並將.dm5號碼存儲在.temp文件中,然後比較兩個臨時文件,如果它們匹配,則獲得$ STATE_OK消息。如果他們不這樣做,它會創建一個包含日期的.datetmp文件(目標是在不一致48小時後打印一條消息)。然後,我對.datetmp文件進行比較,如果結果小於48小時,則打印出$ STATE_WAR,如果結果超過48小時,則打印$ STATE_CRI
sintaxis劇本是「$ SH script.sh nameoftheear.ear server1的服務器2」
在此先感謝
#/bin/bash
#Variables For Nagios
cont=$1
bas1=$2
bas2=$3
## Here you set the servers hostname
svr1= curl -s "http://$bas1.domain.com:7877/apps.json" | grep -Po '"EAR File":.*? [^\\]",' | grep $cont | awk '{ print $5 }' > .$cont-tmpsvr1
svr2= curl -s "http://$bas2.domain.com:7877/apps.json" | grep -Po '"EAR File":.*? [^\\]",' | grep $cont | awk '{ print $5 }' > .$cont-tmpsvr2
file1=.$cont-tmpsvr1
file2=.$cont-tmpsvr2
md51=$(head -n 1 .$cont-tmpsvr1)
md52=$(head -n 1 .$cont-tmpsvr2)
datenow=$(date +%s)
#Error Msg
ERR_WAR="Not updated $bas1: $cont $md51 --- $bas2: $cont $md52 "
ERR_CRI="48 hs un-updated $bas1: $cont $md51 --- $bas2: $cont $md52 "
OK_MSG="Is up to date $bas1: $cont $md51 --- $bas2: $cont $md52 "
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
##Matching md5 Files
if cmp -s "$file1" "$file2"
then
echo $STATE_OK
echo $OK_MSG
# I do the rm to delete the date tmp file so i can get the $STATE_OK or $STATE_WARNING
rm .$cont-datetmp
exit 0
elif
echo $datenow >> .$cont-datetmp
#Vars to set modification date
datetmp=$(head -n 1 .$cont-datetmp)
diffdate=$((($datenow - $datetmp) /60))
#This var is to set the time of the critical ERR
days=$((48*60))
[ $diffdate -lt $days ]
then
echo $STATE_WARNING
echo $ERR_WAR
exit 1
else
echo $STATE_CRITICAL
echo $ERR_CRI
exit 2
fi
嗨,我已經檢查權限,我也修改腳本在TMP FIEL寫的,但問題依然存在,Nagios的pluging的警告顯示和輸出(空)它也創建臨時文件。我是這樣做的,因爲我需要設置這個插件來檢查很多服務器。 –
我更新了我的評論!再試一次? :) – bryn
感謝哥們,解決了我的問題! –