2016-07-21 8 views
0

Я хочу проверить с NAGIOS, может ли мой сервер подключаться к контейнеру Openstack Swift. Я написал простой скрипт, где я использую клиент Swift Python, чтобы получить stat контейнераNagios custom plugin call python Openstack Swift client

Сценарий выглядит следующим образом

#!/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 

Script имеет права доступа и Nagios может работать должным образом. Сам скрипт вызывается из Баша работ и возвращает что-то вроде:

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 там, чтобы посмотреть, не даст ли он мне какой-то результат, и это так. Таким образом, это позволяет мне думать, что что-то не так с параметрами, но я действительно не знаю, что, потому что сама команда, вызванная в оболочке, работает отлично.

Любая помощь приветствуется :)

ответ

0

Оказывается, что это было SELinux (на CentOS) блокирует выполнение команды из-за неправильного контекста файла. Я скопировал файл из домашнего каталога в каталог плагинов Nagios. restorecon check_swift_container -v помогла

0

Попробуйте изменить де первой линии для этого:

#!/usr/bin/env bash