2016-02-05 212 views
0

簡短版本:Nagios輸出格式化

是否有更好的方式來編寫下面的檢查?

./check_snmp -H x.x.x.x -o oidstring -C public | awk '{print $4}' | sed 's/.$/.&/' | sed -e 's/$/ KB/' 

龍版本:

我有一個Nagios的服務檢查輸出三個數字:

./check_snmp -H x.x.x.x -o oidstring -C public 

SNMP OK - 711 | iso.oidstring=711 

這是我做了什麼把它格式化爲我喜歡並給予準確值:

./check_snmp -H x.x.x.x -o oidstring -C public | awk '{print $4}' | sed 's/.$/.&/' | sed -e 's/$/ KB/' 

71.1 KB 

輸出完美,我可以在CentOS環境下運行命令沒有問題,但是當試圖在Nagios中執行檢查時,服務不會返回值,而是我得到(stdout上沒有輸出)。奇怪的是,我甚至可以在Nagios中成功執行服務測試檢查,但顯示主機和服務值的頁面是提供(stdout上沒有輸出)的頁面。

我覺得Nagios不喜歡我試圖格式化我的輸出的方式,至少在網頁上的東西。

是否有一個'整潔'的方式來寫上面的檢查?

在此先感謝。

+0

我不認爲這是你問什麼,但你可以不SED報表做和更改awk'awk'{print($ 4/10)「KB」}''。 – jas

回答

2

你可以將它使用一個單一的sed(使用破折號錨)做:

... | sed 's/^.*- \([0-9]*\)\([0-9]\) .*$/\1.\2 KB/' 

或單AWK:

... | awk '{printf "%s KB\n", $4/10}' 
+0

這兩個例子都很好,謝謝! FTR,@jas上面的例子也很棒。感謝您幫我清理我醜陋的服務檢查。 – DrewCot

0

我Icinga顯示我一個空。

$USER1$/check_snmp -H $HOSTADDRESS$ -C SNMP -o .1.3.6.1.2.1.33.1.2.5.0 $ARG1$ | awk '{printf "%s V\n", $4/10}'

當我手動做到這一點我有正確的輸出:80.2V