Выполнение команды при пропадении линка на интерфейсе..

Автор gardarea51, 15 октября 2012, 11:46:05

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

gardarea51

Привет всем!
С обеда сегодня весь в думах.. Есть файловый сервер с RAID1 на борту, который должен быть поставлен на замену имеющемуся шлюзу. То есть он будет и шлюзом и файл-сервером. Заказал ИБП APC 1100RS. И как то так недоглядел.. в общем получился косяк. ИБП неуправляемый. Таким образом вся идея корректного выключения сервера при пропадании питания накрылась медным тазом.

И тут мне в голову пришла мысль. Нужно расположить некое устройство до ИБП и сервера, соединив его с сервером. При пропадении электричества это устройство будет выключаться, а сервер будет фиксировать момент его выключения и корректно завершать работу скажем через 5 минут. Ну и банально в голове вырисовалась такая схема:
1) Ставлю ИБП, в него подключаю сервер
2) Ставлю простой изернет-свитч, который воткнут в общую сеть, при падении питания он включится
3) Соединяю этот свитч с сервером
4) При выключении свитча на сервере на интерфейсе пропадает линк
5) После пропадения линка сервер вызывает команду корректного завешения работы.

Вопрос: как можно вызвать к примеру halt при пропадении линка на интерфейсе?

Сообщение объединено: 15 октября 2012, 13:20:09

Что-то я сам замудрил, у меня же в сервере 3 сетевых интерфейса, в принципе при отпадывании интерфейса от офисного свитча можно и вызывать такой сценарий. Нашел утилиту ifplugd, странно, но раньше он мне никогда не был нужен и я разбирался что это такое. И вот возникала пара вопросов. Если в файле конфигурации ifplugd указать интерфейс и в файле /etc/ifplugd/action.d/ifupdown явно задать выключение:
#!/bin/sh
set -e

case "$2" in
up)
        /sbin/ifup $1
        ;;
down)
        /sbin/ifdown $1
        /sbin/halt
        ;;
esac
то все работает, однако если пытаться сделать это через файл, к примеру, /etc/network/if-post-down.d/poweroff такого содержания:
if [ "$IFACE" = lo ]; then
   /sbin/halt
fi
то компьютер работу не завершает. Странно, ведь ifplugd при падении интерфейса вызывает ifdown, который уже должен отработать сценари в /etc/network/if-post-down.d/ и /etc/network/if-down.d/. Или я что-то не так понимаю?

lisss

#1
Хм, могу ошибаться, но ifplugd отрабатывает только появление линка, а не его пропадание. А отключение интерфейса не равно пропаданию линка. Сам интересовался этой проблемой, но ничего не нашел и забил. Хотя мониторы умеют определять такой момент.

Напишите простенький скрипт, который будет пинговать контрольный адрес. При неудачном пинге пусть пишет время в переменную, при появлении - обнуляет ее. Если пинга нет 5 минут - выключаемся.