LINUX.ORG.RU

NAGIOS - плагин sftp

 ,


0

1

Всем привет, это снова я )))

Млин, не могу найти нормальный плагин, чтобы тестить удаленный сервер на предмет sftp

Стандартный плагин check_ftp к сожалению sftp не тестит, из сторонних: https://exchange.nagios.org/directory/Plugins/Network-Protocols/SFTP/check_sf... - слишком много ставить надо java, библиотеки, куча пакетов только из-за одного плагина, а у меня сервер для тестирования очень слабенький, не хочу его пичкать кучей пакетов, чисто под nagios машинка.

Остальные не многие (два или три еще пробовал) то не работают, то метод тестирования через какие-то создания файлов и их чтение, то порт указать нельзя, только по 22..

Может есть у кого-то хороший проверенный плагин, чтобы просто коннект проверял по sftp с возможностью указания порта?

Спасибо.



Последнее исправление: Nezhnayka28 (всего исправлений: 1)

Ответ на: комментарий от Amet13

Мне нужно, чтобы возвращался статус, я к сожалению не пишу скрипты bash, соответственно и полноценный плагин тоже не могу написать.

Nezhnayka28
() автор топика

ты какую то херню пытаешься сделать

проверяй ssh, этого более чем достаточно, что бы следить за openssh

JB ★★★★★
()
Ответ на: комментарий от JB

У меня например доступ по sftp производится через proftpd и хотелось бы мониторить его работоспособность - вдруг proftpd отвалиться. Или я не прав здесь?

Nezhnayka28
() автор топика
Ответ на: комментарий от JB

Фиг знает, разве правильно мониторить не конкретно доступ по sftp на удаленную машину, а наличие на удаленной машине процесса, на предположим 2223 порту?

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

proftpd не может просто так взять и перестать корректно работать. Варианты когда он может «сломаться», например после обновления или место на диске кончилось, отслеживаются другими метриками

JB ★★★★★
()
Ответ на: комментарий от JB

Понял, спасибо. Вчера вечером начал писать плагин по непосредственному подключению к sftp (не знаю что из этого выйдет), возможно сегодня вечером доделаю его, покажу что получилось. Если не получится, то придется просто проверять доступность порта - это точно работает.

Nezhnayka28
() автор топика
Ответ на: комментарий от Nezhnayka28

Допилил плагин по проверке соединения по протоколу SFTP.

Для работы плагина необходимо наличие утилиты expect, можно установить из репозитория base:

yum install expect -y

Сам плагин:

#!/bin/bash
 
# Коды выхода
e_ok=0
e_critical=2
e_unknown=3
 
# Порт по-умолчанию 22
port=22
 
# Входящие аргументы
usage="Invalid command line usage";
 
while getopts ":H:P:u:p:" options
do
    case $options in
         H ) host=$OPTARG ;;
         P ) port=$OPTARG ;;
         u ) user=$OPTARG ;;
         p ) pass=$OPTARG ;;
         * ) echo $usage
             exit $e_unknown ;;
    esac
done
 
 
# Проверяем соединение
res=$(expect -c 'spawn sftp -oPort='$port' '$user'@'$host'
# Ждем приглашения на ввод пароля
expect "*assword*"
# Посылаем пароль
send "'$pass'\r"
# Ждем приглашения
expect "sftp>"
# Выходим
send "exit\r"
' 2>/dev/null | grep "sftp>" | wc -w)
 
 
# Анализируем результат
if [ $res -ge 1 ]
then
echo "SFTP OK: Successful connection";
exit $e_ok;
else
echo "SFTP CRITICAL: Could not connect!";
exit $e_critical;
fi

Вызов:

# Параметры:
# -h - хост
# -P - порт (необязательный параметр, по-умолчанию 22)
# -u - пользователь 
# -p - пароль
./сheck_sftp -H [host] -P [port] -u [user] -p [pass@word]

Пример команды Nagios:

define command{
        command_name    check_sftp
        command_line    $USER1$/check_sftp -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -P $ARG3$
}

Пример сервиса Nagios:

define service{
       use                         local-service
       host_name                   my-host
       service_description         SFTP-server
       check_command               check_sftp!user!password!2222                                 
}

Обработку входящих параметров подглядел в плагине Amet13 - спасибо.

Может кому пригодиться.

Nezhnayka28
() автор топика
Ответ на: комментарий от vel

я бы в вызове sftp добавил "-o ConnectTimeout ..." чтоб не ждать пару минут при недоступности хоста.

Полностью согласен, спасибо, более того, добавил еще один параметр, через который можно регулировать время ожидания отклика от сервера.

По этой причине новое описание.

Для работы плагина необходимо наличие утилиты expect, можно установить из репозитория base:

yum install expect -y

Сам плагин:

#!/bin/bash

# Коды выхода
e_ok=0
e_critical=2
e_unknown=3


# Порт по-умолчанию 22
port=22
# Время ожидания по-умолчанию 10 сек
timeout=10


# Входящие аргументы
usage="Invalid command line usage";

while getopts ":H:P:u:p:t:" options
do
    case $options in
         H ) host=$OPTARG ;;
         P ) port=$OPTARG ;;
         u ) user=$OPTARG ;;
         p ) pass=$OPTARG ;;
         t ) timeout=$OPTARG ;;
         * ) echo $usage
             exit $e_unknown ;;
    esac
done


# Проверяем соединение
res=$(expect -c 'spawn sftp -o Port='$port' -o ConnectTimeout='$timeout' '$user'@'$host'
# Ждем приглашения на ввод пароля
expect "*assword*"
# Посылаем пароль
send "'$pass'\r"
# Ждем приглашения
expect "sftp>"
# Выходим
send "exit\r"
' 2>/dev/null | grep "sftp>" | wc -w)


# Анализируем результат
if [ $res -ge 1 ]
then
echo "SFTP OK: Successful connection";
exit $e_ok;
else
echo "SFTP CRITICAL: Could not connect!";
exit $e_critical;
fi

Вызов:

# Параметры:
# -h - хост
# -P - порт (необязательный параметр, по-умолчанию 22)
# -u - пользователь 
# -p - пароль
# -t - время ожидания отклика от сервера (необязательный параметр, по-умолчанию 10 секунд)
./сheck_sftp -H [host] -P [port] -u [user] -p [pass@word] -t [seconds]

Пример команды Nagios:

define command{
        command_name    check_sftp
        command_line    $USER1$/check_sftp -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ $ARG3$
}

Пример сервиса Nagios:

define service{
       use                         local-service
       host_name                   my-host
       service_description         SFTP-server
       check_command               check_sftp!user!password!-P 2222 -t 20                               
}

Nezhnayka28
() автор топика
Ответ на: комментарий от vel

конечно правильно, но нагиос кажется за 30 сек для дефолта срубит, и выдаст критикал с service check timeout

bl ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.