LINUX.ORG.RU
ФорумAdmin

Запуск скрипта при поднятии интерфейса в Centos.

 


0

1

Доброго времени суток.
Centos 6.6. Нужно запускать скрипт при поднятии интерфейса (например, eth2). В конце ifup-post имею:

#!/bin/sh
if [ -x /sbin/test_sc ]; then
    /sbin/test_sc ${DEVICE}

Содержание test_sc:

#!/bin/bash
if [ "$DEVICE" == "eth2" ]; then
        ip rule del from 8.8.8.8
        ip route add default via 8.8.8.9 table tablex
        ip rule add from 8.8.8.8 table tablex
fi


test_sc исполняемый, таблица tablex rt_tables добавлена.


При перезагрузке сети скрипт не выполняется. Я не особо линуксоид и с кеносами/редхатами не работал. В дебиане просто ложил скрипт в if-up.d и был доволен. Выше указанный метод подсмотрел здесь http://xmodulo.com/how-to-run-startup-script-automatically-after-network-inte.... Подскажите пожалуйста что я делаю не так.



Последнее исправление: nokogerra (всего исправлений: 1)

Для того, чтобы проверить, что скрипт не выполняется нужно в его начало ставить простейшую команду, оставляющую след в системе, допустим:

echo 123 >> /tmp/testfile.txt

Иначе нельзя однозначно утверждать, не выполняется ли скрипт вобще или выполняется неправильно.

Если вы взяли пример, то почему не стали делать как там (условие по первому параметру скрипта ($1), а написали условие по переменной среды DEVICE, которая, скорее всего не экспортируется?

Да и путь к ″ip″ лучше указывать, не факт что в ″PATH″ будет ″/sbin″.

mky ★★★★★
()
Ответ на: комментарий от mky

Добрый день, спасибо за ответ.
Действительно, echo показал что скрипт выполняется, при чем для каждого интерфейса, т.е. в текстовом файле я получил 3 строки «123».
По поводу $1 не совсем понял, мне нужно чтобы скрипт выполнялся только для одного интерфейса, а $1 просто рандомная переменная, для какого условия она может служить? «Если такая-то переменная равна eth2, то...», но больше $1 нигде не фигурирует. В чем смысл?
ip в /sbin:

whereis ip
ip: /sbin/ip /usr/share/man/man8/ip.8.gz

nokogerra
() автор топика
Ответ на: комментарий от nokogerra

$1 просто рандомная переменная

Не рандомная, а содержащая имя интерфейса.

В чем смысл?

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

Выведи $DEVICE и $1 в тот же файл и сам все увидишь.

thesis ★★★★★
()
Ответ на: комментарий от nokogerra

Вот вы в стартовом посте привели ссылку. Когда эту ссылку открываешь в браузере, там слева есть полоса прокрутки, если немного прокрутить вниз, будет пример кода (между двумя синими полосочками), там показано, как там используется ″$1″. Раз у вас:

/sbin/test_sc ${DEVICE}

то в ″$1″ будет имено то, что нужно.

Я рад, что у вас ip в /sbin. Я советовал писать в скрипте ″/sbin/ip″, потому что я не помню, гарантирует ли RH, что во время выполнения скриптов ifup, в переменной ″PATH″ будет ″/sbin″. Или вы не знаете, что за переменная такая PATH?

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.