ifwatchd

Отслеживание адресов, добавляемых в интерфейсы или удаляемых из них, и вызов для них сценариев для включения или отключения интерфейса

Синтаксис:

ifwatchd [-hiqv] [-A сценарий_подключения] [-c сценарий_наличия_сигнала]

[-D сценарий_отключения] [-d сценарий_отключенного_интерфейса]

[-n сценарий_отсутствия_сигнала] [-u сценарий_включенного_интерфейса] имя_интерфейса

Поддерживаемые платформы:

Neutrino

Опции:

-A сценарий_подключения

Указать команду, вызываемую при подключении новых интерфейсов (например, карт PCMCIA).

-c сценарий_наличия_сигнала

Указать команду, вызываемую при изменении статуса сигнала "no carrier" (отсутствие) на "carrier" (наличие).

-D сценарий_отключения

Указать команду, вызываемую при отключении интерфейса (например, при удалении карты PCMCIA).

-d сценарий_отключенного_интерфейса

Указать команду, вызываемую при возникновении событий "интерфейс отключен" (или при удалении адреса из интерфейса).

-h

Отобразить краткую информацию.

-i

Запретить вызов сценария включенного интерфейса при запуске для всех наблюдаемых интерфейсов, уже отмеченных как включенные. Если эта опция не указана, то утилита ifwatchd проверяет при запуске наличие метки "включенный" для всех наблюдаемых интерфейсов и при ее наличии вызывает сценарий включенного интерфейса с соответствующими параметрами.

Поскольку утилита ifwatchd обычно запускается в конце последовательности системной загрузки, то возможна ситуация, когда на момент ее запуска уже выполнено включение некоторых наблюдаемых интерфейсов, но соответствующие сценарии включенного интерфейса не вызваны. В связи с этим и в целях упрощения сценариев утилита ifwatchd вызывает их при запуске по умолчанию.

-n сценарий_отсутствия_сигнала

Указать команду, вызываемую при изменении статуса сигнала с "carrier" (наличие) на "no carrier" (отсутствие).

-q

Вывести краткую информацию, не регистрировать сообщения, не связанные с ошибками, в slogger.

-u сценарий_включенного_интерфейса

Указать команду, вызываемую при возникновении событий "интерфейс включен" (или при добавлении адреса в интерфейс).

-v

Выполнить запуск в режиме отладки с выводом расширенной информации и не отключаться от управляющего терминала. Вывести расширенные сообщения о выполнении и отметить ошибки, игнорируемые при функционировании в нормальном режиме. Не используйте эту опцию в /etc/rc.conf.

имя_интерфейса

Имя наблюдаемого интерфейса. Можно указать несколько интерфейсов. События для других интерфейсов игнорируются.

Описание:

Утилита ifwatchd используется для обнаружения изменений адресов в динамических интерфейсах (например, интерфейсах PPP) и для обнаружения изменения статуса сигнала в статических интерфейсах. Иногда эти интерфейсы работают вместе с программой-сервисом, которая обеспечивает выполнение всех требуемых сценариев (например, pppd или isdnd). Однако также возможно и полностью автономное функционирование этих интерфейсов (например, pppoe).

Утилита ifwatchd предоставляет общий способ наблюдения за подобными изменениями. Она контролирует сокет маршрутизации и интерпретирует сообщения RTM_NEWADDR (адрес добавлен), RTM_DELADDR (адрес удален) и RTM_IFINFO (обнаружен сигнал или сигнал потерян). Специальных полномочий для этого не требуется. Сценарии, вызываемые для событий включенного или отключенного интерфейса выполняются с использованием того же идентификатора пользователя, что и для ifwatchd.

Примеры:

# ifwatchd -u /etc/ppp/ip-up -d /etc/ppp/ip-down pppoe0

Если интерфейс pppoe0 является основным подключением к сети Интернет, то сценарии включенного/отключенного интерфейса используются, как правило, для добавления и удаления маршрута по умолчанию. Пример подобного сценария включенного интерфейса:

#! /bin/sh

/sbin/route add default $5

Как описано далее, пятый параметр командной строки содержит адрес удаленной стороны для канала pppoe. Пример соответствующего сценария для отключенного ip:

#! /bin/sh

/sbin/route delete default $5

Примечание. Выполнение этого сценария нецелесообразно в случае, если конфигурация интерфейса pppoe0 предполагает подключение только по запросу (путем установки флага link1), но интерфейс эффективно используется для всех постоянных соединений. Следует использовать

! /sbin/route add default -iface 0.0.0.1

в файле /etc/ifconfig.pppoe0 при подключении по запросу.