dhclient-exit-hooks -> dhcpcd.sh ((настройка vpn corbina))

SLAX, Deep Style, ZenWalk

Модератор: Модераторы разделов

Аватара пользователя
Danhuu
Сообщения: 152
Статус: Пингвинофил
ОС: ArchLinux, Calculate, Gentoo

dhclient-exit-hooks -> dhcpcd.sh

Сообщение Danhuu »

Один добрый человек с корбиновского форума написал набор скриптов для поднятия VPN. Изначально под *buntu/debian, потом портировали на Mandriva/Alt, а я попытался сделать это для Slackware/Zenwalk. И даже получилось за одним исключением. В авторском варианте предлагается на выбор получение маршрутов от DHCP-сервера или прописывание из прилагаемого текстового файла. Мну, естественно, интереснее первый вариант, но он реализуется вот таким скриптом dhclient-exit-hooks:

Код: Выделить всё

RUN="yes"


if [ "$RUN" = "yes" ]; then

         if [ x"$new_rfc3442_classless_static_routes" != x"" ]; then

                 if [ x"$reason" == x"BOUND" ]; then
                         rfc_routes=($new_rfc3442_classless_static_routes)

                         for(( i=0; i < ${#rfc_routes[@]}; )); do
                                 net_length=${rfc_routes[$i]}

                                 ((i++))

                                 net_address=(0 0 0 0)
                                 for(( j=0; j < $[$net_length / 8 + \
                                     ($net_length % 8 ? 1 : 0)]; j++, i++)); do

                                         net_address[$j]=${rfc_routes[$i]}
                                 done

                                 gateway=(0 0 0 0)
                                 for (( j=0; j < 4; j++, i++ )); do
                                         gateway[$j]=${rfc_routes[$i]}
                                 done

                                 old_IFS="$IFS"
                                 IFS='.'

                                 if [ x"$net_length" == x"32" ]; then
                                         /sbin/route add -host "${net_address[*]}" gw "${gateway[*]}"
                                 else
                                         /sbin/route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}"
                                 fi
                                 IFS="$old_IFS"

                         done

                 fi
         fi
fi

А в Слаке/Дзене не dhclient, а dhcpc. Хотя, как я понял, можно как-то прикрутить и dhclient - есть в пакете dhcp, но rc/inet1 под него не заточен, как-то надо руками. Можно ли прикрутить вышепомянутый скрипт к dhcpc? Там есть файл dhcpcd.sh, из мана ясно, что туда можно прописать много чего. Но: а) из мана dhclient выяснил, что переменная $reason специфична для dhclient; б) не настолько продвинут в шелл-скриптах, чтобы всё понять в вышеприведённом скрипте и очень мало понимаю в сетях (честно читал много доки, но в голове не укладывается :blush: )
Так что, кто понимает, прошу помочь! А то добрые корбинцы поменяют маршруты, и хана инету.
Спасибо сказали:
Аватара пользователя
Danhuu
Сообщения: 152
Статус: Пингвинофил
ОС: ArchLinux, Calculate, Gentoo

Re: dhclient-exit-hooks -> dhcpcd.sh

Сообщение Danhuu »

Погуглил-погуглил, и нашёл, что хотя в Слаке и иже с ней, любимой, стоит dhcpc 3.x, уж год как есть 4 и даже 5, которые совместимы с dhclient-exit-hooks вплоть до переменных! Попробую собрать пакет и посмотреть, что получится ;)
Спасибо сказали: