Подскажите плиз со скриптом

SLAX, Deep Style, ZenWalk

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

alexf
Сообщения: 112

Подскажите плиз со скриптом

Сообщение alexf »

Требуется что бы при загрузке системы, включался dhcp клиент и искал сервер. Далее, если он его не находит, то включает другие настройки (статический адрес). Подскажите плиз, как это настроить. По идее это должен быть скрипт где-то в rc.inet но с ходу не пишется. Может кто уже разбирался с таким?
Спасибо сказали:
flank'er
Сообщения: 496
Статус: слаковщик
ОС: Slackware64

Re: Подскажите плиз со скриптом

Сообщение flank'er »

когда-то пользовался dhcp-сервером в своем adsl-модеме. для настройки пользовался скриптом для настройки интернет

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

netconfig

в диалоге указывается
DHCP
после этого все работало.
интернет-соединение устанавливается в rc.inet1, думаю что в конец можно дописать проверку на имеющиеся интерфейсы и в зависимости от результатов что-то предпринимать.
Спасибо сказали:
alexf
Сообщения: 112

Re: Подскажите плиз со скриптом

Сообщение alexf »

Да у меня нет проблем с настройкой dhcp варианта или же статического. А вот как их совмещение делается, я не знаю.

Т.е. понятно что должен быть код:

включить dhcp клиета //это я в курсе как

if(IP адрес не присвоен)
установить следующий статический адрес //это я тоже знаю как

Вот у меня вопрос, как конкретно реализовать подобный алгоритм в rc.inet1 ?

Спасибо сказали:
flank'er
Сообщения: 496
Статус: слаковщик
ОС: Slackware64

Re: Подскажите плиз со скриптом

Сообщение flank'er »

А Вас не смущает что dhcp-клиент в случае неполучения адреса будет его ждать, пока не истечет таймаут, что существенно сказывается на времени загрузки системы?
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: Подскажите плиз со скриптом

Сообщение bormant »

В любом случае, начать стоит с изучения текущего /etc/rc.d/rc.inet1, хотя бы в if_up()/if_down() вложенное и окрест
if [ "${USE_DHCP[$i]}" = "yes" ]; then
...
else
...
fi
Разобраться, как поведёт себя /sbin/dhcpcd при неполучении параметров в течение таймаута, нужно ли его после этого принудительно завершать, завести флаг успешности получения адреса наподобие DHCP_FAIL=, переписать else часть на что-то вроде
if [ ! "${USE_DHCP[$i]}" = "yes" -o ( "${DHCP_FAIL}" = "yes" -a ! -z "${IPADDR[$i]}" ) ], не забыть аналогичные изменения в if_down()...
(наверняка что-то напутал, -z имелась в виду проверка на пустую строку, -a операция "и" (and), -o операция "или" (or))
Спасибо сказали:
alexf
Сообщения: 112

Re: Подскажите плиз со скриптом

Сообщение alexf »

bormant, спасибо, попробуем поразбираться.

flank'er писал(а):
15.03.2010 17:56
А Вас не смущает что dhcp-клиент в случае неполучения адреса будет его ждать, пока не истечет таймаут, что существенно сказывается на времени загрузки системы?

Ну это неизбежное зло как бы... Кстати машинка это не обычная рабочая, а для спец. целей.

Есть ещё вариант поднимать свой dhcp сервер при загрузке. Насколько я знаю, он при обнаружение внешнего сервера корректирует работу с ним. А сеть тогда настроить только на работу с dhcp.
Спасибо сказали:
alexf
Сообщения: 112

Re: Подскажите плиз со скриптом

Сообщение alexf »

Что-то не выходит варианте с dhcp сервером. :wacko:

Он при старте ругается что eth0 не входит в подсеть... Брррр. Неужели нет нормального готового решения для такой простейшей задачи?

Кстати, та же самая винда делает это всё автоматом без хитрых настроек и дополнительного софта...
Спасибо сказали:
flank'er
Сообщения: 496
Статус: слаковщик
ОС: Slackware64

Re: Подскажите плиз со скриптом

Сообщение flank'er »

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

/sbin/ifconfig|grep eth > /dev/null || /sbin/ifconfig eth0 192.168.1.2 && /sbin/route add default gw 192.168.1.1

адреса проставите свои
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: Подскажите плиз со скриптом

Сообщение bormant »

Это вариант для rc.local (и это лучше, чем править rc.inet1). Не нужно ли перед попыткой конфигурирования интерфейса "отнять" его у dhcpcd?
/sbin/dhcpcd -k -d eth0 2> /dev/null
Спасибо сказали:
flank'er
Сообщения: 496
Статус: слаковщик
ОС: Slackware64

Re: Подскажите плиз со скриптом

Сообщение flank'er »

Это вариант для rc.local

нельзя в rc.local. После inet1 начинает выполняться inet2 который поднимает сетевые демоны, к этому моменту сеть должна быть поднята, а rc.local выполняется в последнюю очередь.
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: Подскажите плиз со скриптом

Сообщение bormant »

Действительно, поторопился/упустил из виду, с rc.local ошибка вышла.
Получается, от правки rc.inet1 не уйти. На этот случай нужно себе "завязать узелок" на память, что если после обновления системы (пока это пакет network-scripts-*.t?z) появится rc.inet1.new, потребуется синхронизировать изменения вручную.
Спасибо сказали: