Хорошо, существует простой код Powershell для запуска с. Обратите внимание, что можно использовать имя DNS вместо IP-адреса. Можно изменить {Запись "Работа"} блок для {} (ничего не сделайте), но это проверит с помощью ping-запросов слишком много времена секунда. Так используют Сон commandlet в блоке. Замена {пишет "Отказ!"} блок сценария для действий необходимо сделать в случае отказа. Можно расширить тот сценарий для проверки с помощью ping-запросов массива адресов последовательно, или можно установить некоторых в противоречии с броском действие не для первого потерянного ping, но после того, как набор их потерян. Можно даже использовать некоторый оператор выбора для принятия различных мер для различных неудавшихся хостов. Спросите, нужна ли Вам некоторая дополнительная помощь в сценариях.
while ((get-WmiObject Win32_PingStatus -filter "Address='192.168.1.1' ").Statuscode -eq 0) {Write "Working"; Sleep 2};{write "Failure!"}
Я создаю маленький сценарий удара для Вас:
#!/bin/bash
COUNT_FILE="/tmp/count"
TIME_FILE="/tmp/time"
MAX_SEND=1 #max message
TIME_INT=300 #time interval in second
send () {
ERROR_TYPE="_$1"
MESSAGE=$2
[ -e ${TIME_FILE}${ERROR_TYPE} ] || touch ${TIME_FILE}${ERROR_TYPE}
[ -e ${COUNT_FILE}${ERROR_TYPE} ] || echo 0 > ${COUNT_FILE}${ERROR_TYPE}
if [ $(( $(date +%s) - $(date +%s -r ${TIME_FILE}${ERROR_TYPE}) )) -gt $TIME_INT ];
then
COUNT=0
touch ${TIME_FILE}${ERROR_TYPE}
else
COUNT=`cat ${COUNT_FILE}${ERROR_TYPE}`
fi
if [ $COUNT -lt $MAX_SEND ];
then
echo "$MESSAGE";
#real send message
fi
COUNT=$(($COUNT+1))
echo $COUNT > "${COUNT_FILE}${ERROR_TYPE}"
}
send "check_dns" "message"
Ответом на такие вопросы чаще всего является Nagios. Опции предупреждения так гибки, как это контролирует возможности. Настройте его для отправки только предупреждений, которые Вы хотите и не больше.