не отрабатывает скрипт. в чем ошибка?
есть у инет, который через pptp работает, внешний ip динамический.
и сетевуха к провайдеру то же получает динамический ip по dhcp.
соответсвенно фаирволл запускаю после поднятия ppp0.
вот начало фаирвола: /etc/rc.d/rc.firewall
#!/bin/bash
IPTABLES=`which iptables`
GREP=`which grep`
AWK=`which awk`
IFCONFIG=`which ifconfig`
#
EXTIF="eth1"
PPPIF="ppp0"
EXTIP="`$IFCONFIG $EXTIF | $AWK /$EXTIF/'{next}//{split($0,a,":");split(a[2],a," ");print a[1];exit}'`"
PPPIP="`$IFCONFIG $PPPIF | $AWK /$PPPIF/'{next}//{split($0,a,":");split(a[2],a," ");print a[1];exit}'`"
echo "external ip $EXTIP"
echo " ppp ip $PPPIP"
если просто запустить фаил из под рута, то все отрабатывает корректно.
и echo выводит правильные ip.
прописывыю свой скрипт фаирвола в /etc/ppp/if-up.local он запускается, но не может правильно выдать ip.
т.е. переменные $EXTIP и $PPPIP пустые.
при этом если в скрипте сделать ifconfig, то он вылезает правильный что из под рута, что из if-up скрипта.
в чем тут ошибка.
или как мне еще можно запустить фаирвол после поднятия ppp0.
(например ip ppp0 интерфейса можно получить в if-up скрипте одним из параметров, но ip сетевухи все равно нужо как-то узнать самому)
- Для комментирования войдите или зарегистрируйтесь
Попробуйте
Попробуйте прописать запуск скрипта в /etc/conf.d/local.start
P.S. Очень похоже, что скрипт не знает, где искать "which" - т.е. скрипт запускается до того, как загружены локальные переменные с путями.
локал старт не
локал старт не поможет.
ppp может рестартовать кучу раз, каждый раз получая новый ip.
может и вообще вся сетка отваливаться, получая новый ip на сетевуху и поднимая ppp заново.
работу скрипта проверял уже после полной загрузки системы. ppp0 пока не добавлен в ранлевел.
ЗЫ к тому же в скрипте добавив строчку $IFCONFIG я получаю правильный листинг ifconfig'а, и от рута и в скрипте if-up т.е. which отрабатывает привильно.
_________________
Eugeny Davidov [ED404-RIPE]
debuging
Ну вставьте остаётся проверить что с AWK, например так:
echo $AWK
так авк то же
так авк то же правильно выводт.
в итоге заменил в начале на абсолютные пути, вместо `which ...`, стало работать из любого места.
_________________
Eugeny Davidov [ED404-RIPE]
Это проблема с PATH.
which, опираеться на $PATH для поиска пути к бинарнику. Лучше использовать command -p command или в начале срипта задать явно PATH.