2015-09-18 59 views
0

我試圖bash腳本轉換爲Nagios的插件Nagios的插件來檢查文件x分鐘內創建

該腳本將運行一個find命令,看看文件x分鐘內創建:

#!/bin/bash 
# 
#Check NVR 


newfiles=$(find /srv/unifi-video/videos/* -name '*.ts' -mmin -10 | wc -l) 

if [[ $newfiles -eq 0 ]] ; then 
    echo "!!!WARNING!!! The NVR has System stopped recording." 
fi 

我試圖把該腳本轉換爲Nagios的插件在這裏:

#!/bin/bash 
# 
#Check NVR 
#http://www.netchester.com 
#Check if NVR System is recording correctly 
newfiles=$(find /srv/unifi-video/videos/* -name '*.ts' -mmin -10 | wc -l) 
case $mewfiles in 
if [[$newfiles -ne 0]] 
then 
echo "!!!OK!!! NVR is recording." 
exit 0 
fi 
if [[$newfiles -eq 0]] 
then 
echo "!!!WARNING!!! NVR is not recording." 
exit 1 
fi 

但我保持我每次運行它時收到錯誤消息:

./check_nvr.sh: line 9: syntax error near unexpected token `[[$newfiles' 
./check_nvr.sh: line 9: `if [[$newfiles -ne 0]]' 

我不知道如何解決這個問題。我會很感激任何指導!

編輯:

我改變了腳本:

#!/bin/bash 
# 
#Check NVR 
#http://www.netchester.com 
#Youssef Karami 
#Check if NVR System is recording correctly 
newfiles=$(find /srv/unifi-video/videos/ -name '*.ts' -mmin -10 | wc -l) 
case $newfiles in 
[1]*) 
echo "OK - $newfiles$ found." 
exit 0 
;; 
[0]*) 
echo "WARNING - $newfiles% found." 
exit 1 
;; 
esac 

但現在經過我跑了劇本

+0

我不是專家,但是你不需要'[['和''']]之後的空格嗎? – NoseKnowsAll

+0

我做了和沒有空間我得到了相同的錯誤信息 –

+0

請看看:http://www.shellcheck.net/ – Cyrus

回答

-1

有幾個問題我沒有得到一個輸出。

  • 使用/ bin/bash,您可以簡單地使用[而不是[[
  • 您應該在表達式之前和之後留出空格。
  • case $newfiles in是不必要的。

所以,這應該工作:

#!/bin/bash 
# 
#Check NVR 
#http://www.netchester.com 
#Check if NVR System is recording correctly 

newfiles=$(find . -name '*.ts' -mmin -10 | wc -l) 

if [ $newfiles != 0 ] 
then 
echo "!!!OK!!! NVR is recording." 
exit 0 
fi 
if [ $newfiles == 0 ] 
then 
echo "!!!WARNING!!! NVR is not recording." 
exit 1 
fi 

這裏是我的系統上的輸出。

vagrantt:puppet donald$ ./check.sh 
!!!WARNING!!! NVR is not recording. 
vagrant:puppet hdonald$ touch blah.ts 
vagrant:puppet donald$ ./check.sh 
!!!OK!!! NVR is recording. 
+0

個人選擇tripleee。它更便攜。 http://stackoverflow.com/questions/669452/is-preferable-over-in-bash-scripts –

+0

如果其他shell的可移植性是一個問題,你不會使用'#!/ bin/bash',對嗎? – tripleee

+0

@Donald_W我只是發佈了一個答案,如果你可以看看請 –

1

@Donald_W

我把它通過改變腳本的工作:

#!/bin/bash 
# 
#Check NVR 
#http://www.netchester.com/scripts_sh/check_nvr 
#Youssef Karami 
#Check if NVR System is recording correctly 
newfiles=$(find /srv/unifi-video/videos/ -name '*.ts' -mmin -10 | wc -l) 
case $newfiles in 
[1-9]*) 
echo "!!!OK!!! - NVR is working properly - $newfiles found." 
exit 0 
;; 
[0]*) 
echo "!!!WARNING!!! - NVR is not recording - $newfiles found." 
exit 1 
;; 
esac 

但我注意到,在Nagios的儀表盤不顯示主機沒有記錄。爲了測試,我停止了錄製,並且在運行腳本時收到了警告消息,但它在Nagios中並未顯示爲問題。