LINUX.ORG.RU

ifup применяет некорректные настройки сети

 ,


0

3

Всем доброго времени суток.

Небольшая предистория. Есть одноплатный компьютер на котором работает emdebian.

Внутри крутится демон на с++, который, помимо основных задач, анализирует состояние перемычек на плате. Если замкнута перемычка, отвечающая за сброс ip адреса, демон запускает скрипт следующего содержания:

#!/bin/bash

defaultfile="/etc/network/interfaces.save"
targetfile="/etc/network/interfaces"

if [ -f ${defaultfile} ]; then
        ifdown eth0 --force
        cp ${defaultfile} ${targetfile}
        ifup eth0 --force
        echo "Network settings restored!"
else
        echo "Could not restore network settings!"
fi

Содержимое файла /etc/network/interfaces.save:

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0

Я ожидаю, что после выполнения этого скрипта параметры сети изменятся на указанные выше. На деле параметры сети не меняются.

Мой демон, который анализирует перемычки, запускается при старте одноплатника по крону с параметром @reboot:

@reboot /var/www/webdaemon/webscript.sh 2>&1 >> /dev/null &

После него стартует только apache2.

Собственно, вопрос - как мне сделать так, чтобы настройки сети реально изменились?

★★

Ответ на: комментарий от Gotf

Это, скорее всего не прокатит...

syslog пишет следующее:

Jan  1 00:00:58 ep9315 dhclient: bound to 192.168.52.19 -- renewal in 43024 seconds.
Jan  1 00:01:02 ep9315 kernel: eth0: no IPv6 routers present
Jan  1 00:01:03 ep9315 /usr/sbin/cron[963]: (CRON) INFO (pidfile fd = 3)
Jan  1 00:01:03 ep9315 /usr/sbin/cron[964]: (CRON) STARTUP (fork ok)
Jan  1 00:01:03 ep9315 /usr/sbin/cron[964]: (CRON) INFO (Running @reboot jobs)
Jan  1 00:01:04 ep9315 /USR/SBIN/CRON[979]: (root) CMD (/var/www/webdaemon/webscript.sh 2>&1 >> /dev/null &)
Jul 25 18:05:02 ep9315 dhclient: receive_packet failed on eth0: Network is down
Jul 25 18:05:04 ep9315 dhclient: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
Jul 25 18:05:06 ep9315 dhclient: DHCPOFFER from 192.168.52.1
Jul 25 18:05:06 ep9315 dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67
Jul 25 18:05:06 ep9315 dhclient: DHCPACK from 192.168.52.1
Jul 25 18:05:07 ep9315 dhclient: bound to 192.168.52.19 -- renewal in 41738 seconds.

Я трактую это примерно так:

сначала мы получаем настройки сети, потом запускаем демон, который устанавливает время.

Из-за того, что время ушло резко вперед, система пытается снова запросить ip-адрес у dhcp-сервера, однако в это время демон видит, что нужная перемычка замкнута и запускает мой скрипт.

Скрипт делает ifdown eth0 (Jul 25 18:05:02 ep9315 dhclient: receive_packet failed on eth0: Network is down в логе). Но потом почему-то плата все-таки получает ip-адрес от dhcp-сервера, а не из новых настроек...

Теперь надо понять, как это перебороть...

solovey ★★ ()

Всего 2 слова: переменные окружения!!!

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