Linux NetworkManager выполнить up down скрипты

Сегодня озадачился вопросом прописать скрипт уменьшения мощности wifi при подключении к беспроводной сети.

Если соединение стабильное, т.е. точка доступа совсем рядом, то это дает несколько приемуществ:

  1. Экономия батареи ноутбука.
  2. Уменьшение "вредного" излучения wifi.
  3. Улучшение качества связи (да, как ни странно).

И так, в Linux принято скрипты прописывать прямо в файле /etc/network/interfaces, однако в современных системах на основе Linux (ubuntu и др.) как правило используется программа NetworkManager, которая не использует этот файл.

Как же тогда быть? Оказывается, разработчики NetworkManager все предусмотрели: в системе существует специальная директория /etc/NetworkManager/dispatcher.d файлы из которой запускаются (исполняются) при любых происходящихсобытиях. Да, файлы должны принадлежать root и иметь соответствующие права на запуск.

При запуске передаются 2 параметра: $1 интерфейс и $2 статус.

Привожу пример такого файла:

#!/bin/bash
IF=$1
STATUS=$2
if [ "$IF" == "eth1" ]
then
    case "$2" in
        up)
        logger -s "NM Script up triggered"
        #command1
        ;;
        down)
        logger -s "NM Script down triggered"
        #command2
        ;;
        pre-up)
        logger -s "NM Script pre-up triggered"
        #command3
        ;;
        post-down)
        logger -s "NM Script post-down triggered"
        #command4
        ;;
        *)
        ;;
    esac
fi

Проверить работу скрипта можно прочитав файл /var/log/syslog, в котором будут появляться соответствующие сообщения.

В своем случае я добавил строчку

iwconfig eth1 txpower 0.01

В раздел up.

Удачного дня! :-)

0 comments so far:

Отправить комментарий

  • HTML-теги запрещены
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

Image CAPTCHA