2016-07-21 61 views
0

我想檢查NAGIOS我的服務器是否可以連接到Openstack Swift容器。我寫了一個簡單的腳本,我用斯威夫特Python客戶端來獲取容器Nagios自定義插件調用python Openstack Swift客戶端

腳本看起來像

#!/bin/bash 

set -e 

STATE_OK=0 
STATE_WARNING=1 
STATE_CRITICAL=2 
STATE_UNKNOWN=3 
STATE_DEPENDENT=4 


if ! which /usr/bin/swift >/dev/null 2>&1 
then 
    echo "Swift command not found" 
    exit $STATE_UNKNOWN 
fi 
my_swift="/usr/bin/swift -V 2.0 -A http://my-swift-domain.com:5000/v2.0/ --insecure --os-username my-user-name --os-password my-password --os-tenant-name tenant-name stat container" 


output=`$my_swift | grep Objects | sed 's/Objects:\s*\([0-9]*\).*/\1/'` 

if [ "$output" -eq "$output" ] 2>/dev/null 
then 
    echo "successfully connected to swift. Number of objects in container $output"; 
    exit $STATE_OK 
else 
    echo "Number of container objects is not correct"; 
    exit $STATE_CRITICAL 
fi 

腳本有正確的權限和Nagios是能夠正常運行的stat。腳本本身從bash調用並返回類似於:

successfully connected to swift. Number of objects in container   4973123 

但是,它不會當我通過nrpe運行它。我檢查運行/usr/lib64/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_swift 我只是得到Number of container objects is not correct

調試後,我敢肯定,命令

output=`$my_swift | grep Objects | sed 's/Objects:\s*\([0-9]*\).*/\1/'` 

甚至沒有叫。

我試圖把swift --version那裏只是爲了看看它會給我一些輸出,它確實。所以,它讓我覺得參數有問題,但我真的不知道是什麼,因爲在shell中調用的命令本身工作得很好。

任何幫助表示讚賞:)

回答

0

事實證明,它是SELinux的(在CentOS)阻塞,因爲錯誤的情況下的命令的執行的文件。我將該文件從主目錄複製到Nagios的插件目錄。 restorecon check_swift_container -v幫助

0

嘗試去第一線更改此:

#!/usr/bin/env bash