Признаюсь, я не вполне понимаю ваши намерения. Тем не менее, у меня может быть решение.
Во-первых, "Dec", "Jan",... обычно восходят к заголовку системного журнала тогда и только тогда, когда это традиционный системный журнал RFC3164. В более новых системах такой индикации нет. Кроме того, многие системы нарушают стандарт системного журнала, и вы также можете не найти эти строки внутри сообщения.
Если предположить, что они присутствуют, а также предположить, что они находятся в заголовке системного журнала :, тогда они НЕ являются частью $msg или $fromhost. Чтобы сделать это гладко и легко, вы можете просто проверить $rawmsg, который является сообщением, которое было замечено в сети. Это в неразобранной форме, и это худший способ справиться с такими вещами, но хорошо, что он работает без полного понимания теории.
Так что можно сказать:
$template mynets,"/scratch/network/%HOSTNAME%/messages.log"
if $rawmsg contains 'Dec ' then -?mynets
& stop
Обратите внимание, что я добавил по крайней мере пробел после «Dec», потому что в противном случае он будет соответствовать всему, что содержит эту строку (, например. «Десятичный» ).
Вероятно, это работает, но зависит от ряда вещей, которые вы не должны принимать как должное. Гораздо лучший способ, например. чтобы проверить, отличается ли IP-адрес $fromhost -от локального хоста. Или, что еще лучше, создать специальный набор правил для удаленных журналов. Но это не относится к первоначальным вопросам, так что давайте опустим это.
Зная, что сервер работает. Недостаточно знать, что он выполняет свою службу. Поэтому забудьте проверить, что процесс запущен. Вместо этого посмотрите, сможете ли вы заставить его работать.
Т.е. Запросите веб-страницу с него.
Это зависит от того, какой уровень вы хотите знать.
Чтобы действительно проверить, работает ли это, используйте
if curl --output /dev/null --silent --head --fail "$url"; then
echo yes
else
echo no
fi
Если вас не интересуют определенные страницы, вы можете просто:
if curl -s url ; then
echo jes
else
echo no
fi
Если вы хотите знать, что apache прослушивает порт,
sudo lsof -i -P -n | grep LISTEN
дает вам эту информацию.
Если вы хотите узнать, запущен ли процесс,
if ps -aux | grep 'http[d]' ; then
echo yes
else
echo no
fi
должно помочь.