Назад | Перейти на главную страницу

Мониторинг проверки доступности сети

Я хотел бы запустить службу с помощью monit, но только когда у меня есть правильный IP-адрес, привязанный к хосту. Можно это как-то с обычным конфигом сделать? Например, я хочу запустить процесс xxx с pidfile xxx.pid, но только если хост в настоящее время привязан к какому-либо интерфейсу 10.0.0.1.

В любом случае, старый вопрос старый: вы можете использовать для этого guessnet + ifupdown.

Наверное, на чистом мониторе этого сделать нельзя.

Вы можете написать сценарий оболочки, который проверяет, привязан ли IP-адрес к какому-либо интерфейсу, и только после запуска службы, но побочным эффектом является то, что monit будет жаловаться, что программа не запущена, если файл pid не был создан после запуска monit.

ОБНОВИТЬ: Вы можете отключить это предупреждение, добавив местное предупреждение:

 check process myproc with pidfile /var/run/my.pid
   alert foo@bar only on { timeout } 

ОБНОВЛЕНИЕ2: Bash-скрипт может быть чем-то вроде этого (вам нужно указать фактический стартовый скрипт в качестве аргумента):

#!/usr/bin/env bash

for i in `/sbin/ifconfig -a | grep 'inet addr:' | awk '{print $2}' | sed -e 's/^.*://'` ;do
  if [ "$i" == "10.0.0.1" ] ; then
    $1
  fi
done