Мой Mac работает как сервер с IP-адресом dyndns. Для правильной работы он должен быть постоянно подключен к Интернету. но, к сожалению, кажется, что он не подключается много раз в течение дня. Поэтому мне нужен инструмент, который проверяет, например, один раз в минуту, подключен ли Mac к Интернету (т.е. пытается связаться с Google), и записывает его в файл журнала.
Вы знаете что-нибудь, что может здесь помочь? Мне нужно проверить на автомате, есть ли у него интернет. Mac OS 10.5. Спасибо, парни!!
Nagios будет работать на Mac и с открытым исходным кодом / бесплатно!
http://www.macworld.com/article/134079/2008/06/nagios.html
Установка Nagios позволяет превратить любой Mac под управлением Mac OS X Server в станцию сетевого мониторинга, способную уведомить вас о проблемах как с оборудованием, так и с программным обеспечением на вашем сервере, обычно до того, как вас заметят другие. Nagios может использовать как электронную почту, так и SMS, чтобы уведомить вас как о проблемах, так и об устранении проблем. (Последнее важно, поскольку оно часто может спасти вас от ночного сеанса удаленного доступа.) Поскольку Nagios требует Perl, Apache, SNMP и некоторых других вещей, которые Mac OS X Server либо поставляются вместе, либо которые могут быть установлены с простота, это отличный способ для любого сетевого администратора лучше контролировать свою сеть.
Вы можете установить nagios на обычный Mac, они тоже Unix-машины :)
Подойдет ли такой сценарий?
#!/bin/bash
LOG=/tmp/LOG
rm -f $LOG
while ( true );
do
date >> $LOG;
curl http://www.google.com/ > /dev/null 2>> $LOG
sleep 60 ;
done
ИМХО, Nagios - это перебор для этого. Кроме того, одной из вероятных причин этих расширенных фаз автономного режима является отсутствие сетевого трафика, поэтому ваш маршрутизатор отключается.
Этому будет препятствовать приведенный выше сценарий Джеймса, который я бы немного изменил, чтобы не загружать страницу Google каждые 60 секунд.
Просто замените строку curl google.com на следующую
ping -c1 -t 5 www.google.com > /dev/null
if [ "$?" = "0" ]; then
echo "I am online" > $LOG
else
echo "Boo, the internet is broken, google doesn't answer" > $LOG
fi
или, если вы хотите регистрировать только автономные фазы, измените весь сценарий следующим образом:
#!/bin/bash
LOG=/tmp/internetlog
rm -f $LOG
while ( true );
do
ping -c1 -t 5 www.google.com > /dev/null
if [ "$?" -gt "0" ]; then
echo `date` " I am offline" >> $LOG
fi
sleep 60 ;
done
Это заменяет вызов curl, который загружает всю страницу из Google с помощью одного пинга с 5-секундным таймаутом, что обычно достаточно.
это может быть немного излишним, но я бы рекомендовал вам использовать плагины nagios текст ссылки, используя их, вы можете написать простой сценарий оболочки, чтобы делать то, что вам нужно, или, я думаю, другой альтернативой вы можете использовать простой пинг также с сценарием оболочки, хотя это можно сделать намного проще с помощью плагинов nagios.