Подскажите плиз со скриптом
Модератор: Модераторы разделов
-
alexf
- Сообщения: 112
Подскажите плиз со скриптом
Требуется что бы при загрузке системы, включался dhcp клиент и искал сервер. Далее, если он его не находит, то включает другие настройки (статический адрес). Подскажите плиз, как это настроить. По идее это должен быть скрипт где-то в rc.inet но с ходу не пишется. Может кто уже разбирался с таким?
-
flank'er
- Сообщения: 496
- Статус: слаковщик
- ОС: Slackware64
Re: Подскажите плиз со скриптом
когда-то пользовался dhcp-сервером в своем adsl-модеме. для настройки пользовался скриптом для настройки интернет
в диалоге указывается
DHCP
после этого все работало.
интернет-соединение устанавливается в rc.inet1, думаю что в конец можно дописать проверку на имеющиеся интерфейсы и в зависимости от результатов что-то предпринимать.
Код: Выделить всё
netconfigв диалоге указывается
DHCP
после этого все работало.
интернет-соединение устанавливается в rc.inet1, думаю что в конец можно дописать проверку на имеющиеся интерфейсы и в зависимости от результатов что-то предпринимать.
Спасибо сказали:
-
alexf
- Сообщения: 112
Re: Подскажите плиз со скриптом
Да у меня нет проблем с настройкой dhcp варианта или же статического. А вот как их совмещение делается, я не знаю.
Т.е. понятно что должен быть код:
включить dhcp клиета //это я в курсе как
if(IP адрес не присвоен)
установить следующий статический адрес //это я тоже знаю как
Вот у меня вопрос, как конкретно реализовать подобный алгоритм в rc.inet1 ?
Т.е. понятно что должен быть код:
включить dhcp клиета //это я в курсе как
if(IP адрес не присвоен)
установить следующий статический адрес //это я тоже знаю как
Вот у меня вопрос, как конкретно реализовать подобный алгоритм в rc.inet1 ?
-
flank'er
- Сообщения: 496
- Статус: слаковщик
- ОС: Slackware64
Re: Подскажите плиз со скриптом
А Вас не смущает что dhcp-клиент в случае неполучения адреса будет его ждать, пока не истечет таймаут, что существенно сказывается на времени загрузки системы?
Спасибо сказали:
-
bormant
- Сообщения: 1354
Re: Подскажите плиз со скриптом
В любом случае, начать стоит с изучения текущего /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))
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: Подскажите плиз со скриптом
bormant, спасибо, попробуем поразбираться.
Ну это неизбежное зло как бы... Кстати машинка это не обычная рабочая, а для спец. целей.
Есть ещё вариант поднимать свой dhcp сервер при загрузке. Насколько я знаю, он при обнаружение внешнего сервера корректирует работу с ним. А сеть тогда настроить только на работу с dhcp.
Ну это неизбежное зло как бы... Кстати машинка это не обычная рабочая, а для спец. целей.
Есть ещё вариант поднимать свой dhcp сервер при загрузке. Насколько я знаю, он при обнаружение внешнего сервера корректирует работу с ним. А сеть тогда настроить только на работу с dhcp.
-
alexf
- Сообщения: 112
Re: Подскажите плиз со скриптом
Что-то не выходит варианте с dhcp сервером.
Он при старте ругается что eth0 не входит в подсеть... Брррр. Неужели нет нормального готового решения для такой простейшей задачи?
Кстати, та же самая винда делает это всё автоматом без хитрых настроек и дополнительного софта...
Он при старте ругается что eth0 не входит в подсеть... Брррр. Неужели нет нормального готового решения для такой простейшей задачи?
Кстати, та же самая винда делает это всё автоматом без хитрых настроек и дополнительного софта...
-
flank'er
- Сообщения: 496
- Статус: слаковщик
- ОС: Slackware64
Re: Подскажите плиз со скриптом
Код: Выделить всё
/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: Подскажите плиз со скриптом
Это вариант для rc.local (и это лучше, чем править rc.inet1). Не нужно ли перед попыткой конфигурирования интерфейса "отнять" его у dhcpcd?
/sbin/dhcpcd -k -d eth0 2> /dev/null
/sbin/dhcpcd -k -d eth0 2> /dev/null
Спасибо сказали:
-
flank'er
- Сообщения: 496
- Статус: слаковщик
- ОС: Slackware64
Re: Подскажите плиз со скриптом
Это вариант для rc.local
нельзя в rc.local. После inet1 начинает выполняться inet2 который поднимает сетевые демоны, к этому моменту сеть должна быть поднята, а rc.local выполняется в последнюю очередь.
Спасибо сказали:
-
bormant
- Сообщения: 1354
Re: Подскажите плиз со скриптом
Действительно, поторопился/упустил из виду, с rc.local ошибка вышла.
Получается, от правки rc.inet1 не уйти. На этот случай нужно себе "завязать узелок" на память, что если после обновления системы (пока это пакет network-scripts-*.t?z) появится rc.inet1.new, потребуется синхронизировать изменения вручную.
Получается, от правки rc.inet1 не уйти. На этот случай нужно себе "завязать узелок" на память, что если после обновления системы (пока это пакет network-scripts-*.t?z) появится rc.inet1.new, потребуется синхронизировать изменения вручную.