Я хотел бы запустить службу с помощью 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