Отслеживание линка на сетевухе
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- рядовой
- Сообщения: 34
- Зарегистрирован: 2009-12-21 11:49:15
Отслеживание линка на сетевухе
Добрый день!
Вопрос в теме озвучен, нужно как то отследить пропадание линка на сетевухе. Не пинга, ни другие методы мониторинга, а именно железно - оборудование выключено линка нет, регистрация этого дела в системе и действие.
Вопрос в теме озвучен, нужно как то отследить пропадание линка на сетевухе. Не пинга, ни другие методы мониторинга, а именно железно - оборудование выключено линка нет, регистрация этого дела в системе и действие.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- ст. сержант
- Сообщения: 360
- Зарегистрирован: 2008-07-29 9:02:04
-
- рядовой
- Сообщения: 34
- Зарегистрирован: 2009-12-21 11:49:15
Re: Отслеживание линка на сетевухе
Хм, не знаю даж...
Поясню всю ситуацию:
Есть УПС без интерфейсов, сервант домашний, поэтому не до проф железок. Ну и покупать для дома другой не имеет смысла. Схема такая:
[сервант] ---- [ADCL] ----тырнет
......| .............|
....[УПС] .........220
.....|
....220

Отрубили питалово, сервант живет от упса, АДСЛ выключился - линк пропал.
Надо отследить и дать команду на выключение.
В биосе ПК настраиваем вкл при появлении питания.

Поясню всю ситуацию:
Есть УПС без интерфейсов, сервант домашний, поэтому не до проф железок. Ну и покупать для дома другой не имеет смысла. Схема такая:
[сервант] ---- [ADCL] ----тырнет
......| .............|
....[УПС] .........220
.....|
....220

Отрубили питалово, сервант живет от упса, АДСЛ выключился - линк пропал.
Надо отследить и дать команду на выключение.
В биосе ПК настраиваем вкл при появлении питания.

-
- ст. сержант
- Сообщения: 360
- Зарегистрирован: 2008-07-29 9:02:04
Re: Отслеживание линка на сетевухе
Линк какой ? И кто поднимает ? Если сам сервак нечто типа пппое то можно поставить в мпд даунлинк скрипт с каунтером на количество попаток. И например после 3 неудачных класть сервак.
- terminus
- майор
- Сообщения: 2305
- Зарегистрирован: 2007-10-29 11:27:35
- Откуда: Рига
Re: Отслеживание линка на сетевухе
/etc/crontab
/root/test.sh
---
я там со скобками в while накасячил - исправил.
Код: Выделить всё
*/5 * * * * root /root/test.sh
Код: Выделить всё
#!/bin/sh
# esli na protjazhenii 5 minut interfeis ne UP, to TEST=5 i vipolnajem shutdown
TIME=0
TEST=0
while [ $TIME -ne 300 ]
do
ifconfig em0 | head -n 1 | grep UP > /dev/null
if [ $? -eq 1 ]
then
TEST=$(($TEST+1))
fi
sleep 60
TIME=$(($TIME+60))
done
if [ $TEST -eq 5 ]
then
shutdown -p now
fi
я там со скобками в while накасячил - исправил.
Последний раз редактировалось terminus 2009-12-21 18:21:18, всего редактировалось 2 раза.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.
-
- рядовой
- Сообщения: 34
- Зарегистрирован: 2009-12-21 11:49:15
Re: Отслеживание линка на сетевухе
ADSL модем поднимает соединение, когда нет питалова на ADSL - нет линка, сервак от УПСа еще какое то время трепыхается.Линк какой ? И кто поднимает ?

terminus вот спасибо!
Сейчас опробую скрипт.
-
- рядовой
- Сообщения: 34
- Зарегистрирован: 2009-12-21 11:49:15
Re: Отслеживание линка на сетевухе
Не гаснет что-то, перенаправил вывод в файл powertest.log, отрубил подождал, подрубил глянул что в файле:
т.е. UP как было 
Код: Выделить всё
ifconfig re0 | head -n 1 | grep UP >> /usr/local/etc/script/powertest.log
Код: Выделить всё
# less powertest.log
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
re0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500

-
- рядовой
- Сообщения: 34
- Зарегистрирован: 2009-12-21 11:49:15
Re: Отслеживание линка на сетевухе
А вот messages замечательно говорит когда ап, когда даун
Понял, надо скорее по status: active или status: no carrier отслеживать.
Код: Выделить всё
# less /var/log/messages | grep link
Dec 21 18:09:53 kernel: re0: link state changed to DOWN
Dec 21 18:16:59 kernel: re0: link state changed to UP
Dec 21 18:21:19 kernel: re0: link state changed to DOWN
- terminus
- майор
- Сообщения: 2305
- Зарегистрирован: 2007-10-29 11:27:35
- Откуда: Рига
Re: Отслеживание линка на сетевухе
Блин, ну да - че-то я лоханулся. Конечно же по status:
Код: Выделить всё
#!/bin/sh
# esli na protjazhenii 5 minut interfeis ne active, to TEST=5 i vipolnajem shutdown
TIME=0
TEST=0
while [ $TIME -ne 300 ]
do
ifconfig em0 | grep "status: active" > /dev/null
if [ $? -eq 1 ]
then
TEST=$(($TEST+1))
fi
sleep 60
TIME=$(($TIME+60))
done
if [ $TEST -eq 5 ]
then
shutdown -p now
fi
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.
-
- рядовой
- Сообщения: 34
- Зарегистрирован: 2009-12-21 11:49:15
Re: Отслеживание линка на сетевухе
terminus 

- Shuba
- ст. сержант
- Сообщения: 365
- Зарегистрирован: 2008-03-25 10:58:21
- Откуда: Минск
- Контактная информация:
Re: Отслеживание линка на сетевухе
Вообщем данный скрипт я немного доработал:
т.е. добавил 2 строки
После помещения в crontab имеем при работе от сети и работающем модеме:
хотя при запуске в консоли всё нормально (модем вырубать не получилось - находится на другом конце города), т.е. в кронтабе не правильно сроватывает данные строки:
и
Код: Выделить всё
#!/bin/sh
# Если на протяжении 5 минут интерфейс не активен, то TEST=5 и вырубаем комп
TIME=0
TEST=0
while [ $TIME -ne 300 ]
do
ifconfig rl0 | grep "status: active" > /dev/null
if [ $? -eq 1 ]
then
TEST=$(($TEST+1))
echo `date '+%Y.%m.%d %H:%M:%S'`' Питание от батареи' >> /var/log/power.log
fi
sleep 60
TIME=$(($TIME+60))
done
if [ $TEST -eq 5 ]
then
echo `date '+%Y.%m.%d %H:%M:%S'`" Питание отсутствует 5 минут, компьютер выключается" >> /var/log/power.log
shutdown -p now
fi
Код: Выделить всё
echo `date '+%Y.%m.%d %H:%M:%S'`' Питание от батареи' >> /var/log/power.log
echo `date '+%Y.%m.%d %H:%M:%S'`" Питание отсутствует 5 минут, компьютер выключается" >> /var/log/power.log
Код: Выделить всё
2009.12.25 09:50:00 Питание от батареи
2009.12.25 09:51:00 Питание от батареи
2009.12.25 09:52:00 Питание от батареи
2009.12.25 09:53:00 Питание от батареи
2009.12.25 09:54:00 Питание от батареи
2009.12.25 09:55:00 Питание от батареи
2009.12.25 09:55:00 Питание отсутствует 5 минут, компьютер выключается
2009.12.25 09:56:00 Питание от батареи
2009.12.25 09:57:00 Питание от батареи
2009.12.25 09:58:00 Питание от батареи
2009.12.25 09:59:00 Питание от батареи
2009.12.25 10:00:00 Питание отсутствует 5 минут, компьютер выключается
2009.12.25 10:00:00 Питание от батареи
2009.12.25 10:01:00 Питание от батареи
2009.12.25 10:02:00 Питание от батареи
2009.12.25 10:03:00 Питание от батареи
2009.12.25 10:04:00 Питание от батареи
2009.12.25 10:05:00 Питание отсутствует 5 минут, компьютер выключается
2009.12.25 10:05:00 Питание от батареи
2009.12.25 10:06:00 Питание от батареи
Код: Выделить всё
ifconfig rl0 | grep "status: active" > /dev/null
if [ $? -eq 1 ]
then
TEST=$(($TEST+1))
echo `date '+%Y.%m.%d %H:%M:%S'`' Питание от батареи' >> /var/log/power.log
fi
Код: Выделить всё
shutdown -p now
Сила ночи, сила дня - одинакова фигня!
- Shuba
- ст. сержант
- Сообщения: 365
- Зарегистрирован: 2008-03-25 10:58:21
- Откуда: Минск
- Контактная информация:
Re: Отслеживание линка на сетевухе
Вообщем нашёл в чём были грабли. Окончательный вариант будет такой:
Код: Выделить всё
#!/bin/sh
# Если на протяжении 5 минут интерфейс не активен, то TEST=5 и вырубаем комп
TIME=0
TEST=0
while [ $TIME -ne 300 ]
do
/sbin/ifconfig rl0 | grep "status: active" > /dev/null
if [ $? -eq 1 ]
then
TEST=$(($TEST+1))
echo `date '+%Y.%m.%d %H:%M:%S'`' Питание от батареи' >> /var/log/power.log
fi
sleep 60
TIME=$(($TIME+60))
done
if [ $TEST -eq 5 ]
then
echo `date '+%Y.%m.%d %H:%M:%S'`" Питание отсутствует 5 минут, компьютер выключается" >> /var/log/power.log
/sbin/shutdown -p now
fi
Сила ночи, сила дня - одинакова фигня!
- terminus
- майор
- Сообщения: 2305
- Зарегистрирован: 2007-10-29 11:27:35
- Откуда: Рига
Re: Отслеживание линка на сетевухе
Я ваш вариант проверил - у меня работает без проблем. В компе две сетивухи - одна подключена, а вторая нет. Если поставить проверку той что подключена то никаких сообщений и срабатываний, а если ту что не подключена то срабатывания. Вы правильную сетевуху указываете - может, не знаю - не rl0, а rl1 надо, типа...
К стати скрипт можно немного улучшить - выполнять не shutdown -p now а -h now (halt). Если еще в биосе выставить запуск при подаче питания, то тогда комп будет самостоятельно подыматься когда свет вернется.
К стати скрипт можно немного улучшить - выполнять не shutdown -p now а -h now (halt). Если еще в биосе выставить запуск при подаче питания, то тогда комп будет самостоятельно подыматься когда свет вернется.

Код: Выделить всё
#!/bin/sh
# Если на протяжении 5 минут (300 сек) интерфейс не активен, то TEST=5 (300/60) и вырубаем комп
# NIC - сетевой интерфейс который надо мониторить
# TIMEOUT - задержка в секундах перед выключением компьютера
NIC=rl0
TIMEOUT=300
###
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
MINUTES=$(($TIMEOUT/60))
TIME=0
TEST=0
while [ $TIME -ne $TIMEOUT ]
do
ifconfig $NIC | grep "status: active" > /dev/null
if [ $? -eq 1 ]
then
TEST=$(($TEST+1))
echo `date '+%Y.%m.%d %H:%M:%S'`' Питание от батареи' >> /var/log/power.log
fi
sleep 60
TIME=$(($TIME+60))
done
if [ $TEST -eq $MINUTES ]
then
echo `date '+%Y.%m.%d %H:%M:%S'`" Питание отсутствует $MINUTES минут, компьютер выключается" >> /var/log/power.log
shutdown -h now
fi
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.
- Shuba
- ст. сержант
- Сообщения: 365
- Зарегистрирован: 2008-03-25 10:58:21
- Откуда: Минск
- Контактная информация:
Re: Отслеживание линка на сетевухе
Ну так потому и не работало, что в первоначальном варианте не было соответственно из-за того, что ifconfig и shutdown находятся в /sbin и этот путь при исполнении кроном не учитывается всё и не работало. Ща я уже запустил и протестил свой вариант, пашет ну ура!
Код: Выделить всё
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
Сила ночи, сила дня - одинакова фигня!