Как я могу запустить DHCP3-сервер позже, чтобы он ожидал инициализации интерфейса моста перед загрузкой?

Просто выйдите из системы и войдите в систему, чтобы читать файл .pam-environment и распознана переменная среды.

8
задан 4 September 2011 в 08:55

16 ответов

Одно из решений заключается в том, чтобы сообщить dhcp-серверу, что он не запускается автоматически, а затем добавить к вам следующие два файла /etc/network/interfaces для определения моста

post-up /etc/init.d/dhcp3-server start
pre-down /etc/init.d/dhcp3-server stop

. Таким образом, это будет выглядеть это

iface br0 inet static
    bridge_ports eth0 eth1
    address 192.168.1.2
    broadcast 192.168.1.255
    netmask 255.255.255.0
    gateway 192.168.1.1
    post-up /etc/init.d/dhcp3-server start
    pre-down /etc/init.d/dhcp3-server stop

Таким образом, управление сетью (ifup / ifdown, NOT network-manager) запустит DHCP-сервер после создания моста и выключит его, прежде чем удалять мост.

9
ответ дан 26 May 2018 в 01:23
  • 1
    Я тестировал оба ответа, и это решение post-up / pre-down намного чище и удобнее для обновления. Спасибо кучам за большие предложения! Я искал высоко и низко для простого решения, подобного этому – user2009 11 September 2010 в 10:45
  • 2
    Мое удовольствие;) его всегда здорово ценить. – LassePoulsen 11 September 2010 в 17:05

Одно из решений заключается в том, чтобы сообщить dhcp-серверу, что он не запускается автоматически, а затем добавить к вам следующие два файла /etc/network/interfaces для определения моста

post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

. Таким образом, это будет выглядеть это

iface br0 inet static bridge_ports eth0 eth1 address 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 gateway 192.168.1.1 post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

Таким образом, управление сетью (ifup / ifdown, NOT network-manager) запустит DHCP-сервер после создания моста и выключит его, прежде чем удалять мост.

9
ответ дан 25 July 2018 в 23:14

Одно из решений заключается в том, чтобы сообщить dhcp-серверу, что он не запускается автоматически, а затем добавить к вам следующие два файла /etc/network/interfaces для определения моста

post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

. Таким образом, это будет выглядеть это

iface br0 inet static bridge_ports eth0 eth1 address 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 gateway 192.168.1.1 post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

Таким образом, управление сетью (ifup / ifdown, NOT network-manager) запустит DHCP-сервер после создания моста и выключит его, прежде чем удалять мост.

9
ответ дан 31 July 2018 в 11:06

Одно из решений заключается в том, чтобы сообщить dhcp-серверу, что он не запускается автоматически, а затем добавить к вам следующие два файла /etc/network/interfaces для определения моста

post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

. Таким образом, это будет выглядеть это

iface br0 inet static bridge_ports eth0 eth1 address 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 gateway 192.168.1.1 post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

Таким образом, управление сетью (ifup / ifdown, NOT network-manager) запустит DHCP-сервер после создания моста и выключит его, прежде чем удалять мост.

9
ответ дан 31 July 2018 в 12:04

Одно из решений заключается в том, чтобы сообщить dhcp-серверу, что он не запускается автоматически, а затем добавить к вам следующие два файла /etc/network/interfaces для определения моста

post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

. Таким образом, это будет выглядеть это

iface br0 inet static bridge_ports eth0 eth1 address 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 gateway 192.168.1.1 post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

Таким образом, управление сетью (ifup / ifdown, NOT network-manager) запустит DHCP-сервер после создания моста и выключит его, прежде чем удалять мост.

9
ответ дан 2 August 2018 в 04:31

Одно из решений заключается в том, чтобы сообщить dhcp-серверу, что он не запускается автоматически, а затем добавить к вам следующие два файла /etc/network/interfaces для определения моста

post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

. Таким образом, это будет выглядеть это

iface br0 inet static bridge_ports eth0 eth1 address 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 gateway 192.168.1.1 post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

Таким образом, управление сетью (ifup / ifdown, NOT network-manager) запустит DHCP-сервер после создания моста и выключит его, прежде чем удалять мост.

9
ответ дан 4 August 2018 в 21:05

Одно из решений заключается в том, чтобы сообщить dhcp-серверу, что он не запускается автоматически, а затем добавить к вам следующие два файла /etc/network/interfaces для определения моста

post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

. Таким образом, это будет выглядеть это

iface br0 inet static bridge_ports eth0 eth1 address 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 gateway 192.168.1.1 post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

Таким образом, управление сетью (ifup / ifdown, NOT network-manager) запустит DHCP-сервер после создания моста и выключит его, прежде чем удалять мост.

9
ответ дан 6 August 2018 в 04:36

Одно из решений заключается в том, чтобы сообщить dhcp-серверу, что он не запускается автоматически, а затем добавить к вам следующие два файла /etc/network/interfaces для определения моста

post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

. Таким образом, это будет выглядеть это

iface br0 inet static bridge_ports eth0 eth1 address 192.168.1.2 broadcast 192.168.1.255 netmask 255.255.255.0 gateway 192.168.1.1 post-up /etc/init.d/dhcp3-server start pre-down /etc/init.d/dhcp3-server stop

Таким образом, управление сетью (ifup / ifdown, NOT network-manager) запустит DHCP-сервер после создания моста и выключит его, прежде чем удалять мост.

9
ответ дан 7 August 2018 в 22:46

Вы можете изменить сценарий запуска /etc/init.d/dhcp3-server, чтобы ожидать, что IP-адрес будет доступен на br0. Например: (Предупреждение: непроверенный код!)

# wait 5 secs between br0-ready tests
wait_time_between_probes=5
# maximum number of attempts (i.e., timeout)
max_attempts=10

log_progress_msg "Waiting for br0 to get an IP address"
for n in $(seq 1 $max_attempts); do
  if /sbin/ifconfig br0 | egrep -q "inet addr:" ; then
    # IP address ready on br0, exit loop
    break
  else
    sleep $wait_time_between_probes
  fi
done
if [ "$n" = "$max_attempts" ]; then
    log_warning_msg "Maximum number of attempts reached, but br0 has no IP address yet" 
    log_warning_msg "Continuing anyway but DHCP3 server might not start correctly"
fi 

Перед запуском демона DHCP3 фрагмент должен войти в сценарий запуска внутри части case ... start). Конечно, вы должны настроить время ожидания и количество попыток соответствовать вашей среде (сколько времени занимает максимум для br0 для получения IP-адреса?)

2
ответ дан 26 May 2018 в 01:23
  • 1
    Это определенно на верном пути. Я поместил это сразу после «case» $ 1 ». в начале) " в "/etc/init.d/dhcp3-server" однако условие «/ sbin / ifconfig br0 | fgrep -q "addr:" " кажется, даже без интерфейса моста через Интернет. Ввод "/ sbin / ifconfig br0 | fgrep -q "addr:" " в терминал не выводит. – user2009 8 September 2010 в 15:46
  • 2
    Кроме того, хотя тривиально два «log_warning_msg» в конце скрипта будут отображаться независимо от успеха и сбоя. будут ли они лучше внутри журнала с инструкцией стиля if (max_attempts = n), чтобы правильно отображать эти сообщения при ошибке? – user2009 8 September 2010 в 15:46
  • 3
    Также нормальный интерфейс моста занимает дополнительные 5-10 секунд после загрузки интерфейсов, достаточно долго для отказа dhcp3-сервера. – user2009 8 September 2010 в 15:49
  • 4
    @ user2009 Что касается строки grep -q: 1. Я думаю, что матч терпит неудачу, потому что мост получает адрес IPv6, как только он встает. Если вас интересует только адрес IPv4, просто замените строку grep на grep -q 'inet addr:' (уже сделано выше); в противном случае необходимо найти более сложное регулярное выражение, соответствующее всем возможным окончательным IP-адресам вашего моста. 2. Параметр -q подавляет вывод (как > /dev/null), – Riccardo Murri 8 September 2010 в 20:28
  • 5
    @ user2009 благодарит за комментарий к log_warning_msg; Я думаю, что исправил его в соответствии с вашим предложением – Riccardo Murri 8 September 2010 в 20:29

Вы можете изменить сценарий запуска /etc/init.d/dhcp3-server, чтобы ожидать, что IP-адрес будет доступен на br0. Например: (Предупреждение: непроверенный код!)

# wait 5 secs between br0-ready tests wait_time_between_probes=5 # maximum number of attempts (i.e., timeout) max_attempts=10 log_progress_msg "Waiting for br0 to get an IP address" for n in $(seq 1 $max_attempts); do if /sbin/ifconfig br0 | egrep -q "inet addr:" ; then # IP address ready on br0, exit loop break else sleep $wait_time_between_probes fi done if [ "$n" = "$max_attempts" ]; then log_warning_msg "Maximum number of attempts reached, but br0 has no IP address yet" log_warning_msg "Continuing anyway but DHCP3 server might not start correctly" fi

Перед запуском демона DHCP3 фрагмент должен войти в сценарий запуска внутри части case ... start). Конечно, вы должны настроить время ожидания и количество попыток соответствовать вашей среде (сколько времени занимает максимум для br0 для получения IP-адреса?)

2
ответ дан 25 July 2018 в 23:14
  • 1
    Это определенно на верном пути. Я поместил это сразу после «case» $ 1 ». в начале) & quot; в "/etc/init.d/dhcp3-server" однако условие «/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; кажется, даже без интерфейса моста через Интернет. Ввод "/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; в терминал не выводит. – user2009 8 September 2010 в 15:46
  • 2
    Кроме того, хотя тривиально два «log_warning_msg» в конце скрипта будут отображаться независимо от успеха и сбоя. будут ли они лучше внутри журнала с инструкцией стиля if (max_attempts = n), чтобы правильно отображать эти сообщения при ошибке? – user2009 8 September 2010 в 15:46
  • 3
    Также нормальный интерфейс моста занимает дополнительные 5-10 секунд после загрузки интерфейсов, достаточно долго для отказа dhcp3-сервера. – user2009 8 September 2010 в 15:49
  • 4
    @ user2009 Что касается строки grep -q: 1. Я думаю, что матч терпит неудачу, потому что мост получает адрес IPv6, как только он встает. Если вас интересует только адрес IPv4, просто замените строку grep на grep -q 'inet addr:' (уже сделано выше); в противном случае необходимо найти более сложное регулярное выражение, соответствующее всем возможным окончательным IP-адресам вашего моста. 2. Параметр -q подавляет вывод (как > /dev/null), – Riccardo Murri 8 September 2010 в 20:28
  • 5
    @ user2009 благодарит за комментарий к log_warning_msg; Я думаю, что исправил его в соответствии с вашим предложением – Riccardo Murri 8 September 2010 в 20:29

Вы можете изменить сценарий запуска /etc/init.d/dhcp3-server, чтобы ожидать, что IP-адрес будет доступен на br0. Например: (Предупреждение: непроверенный код!)

# wait 5 secs between br0-ready tests wait_time_between_probes=5 # maximum number of attempts (i.e., timeout) max_attempts=10 log_progress_msg "Waiting for br0 to get an IP address" for n in $(seq 1 $max_attempts); do if /sbin/ifconfig br0 | egrep -q "inet addr:" ; then # IP address ready on br0, exit loop break else sleep $wait_time_between_probes fi done if [ "$n" = "$max_attempts" ]; then log_warning_msg "Maximum number of attempts reached, but br0 has no IP address yet" log_warning_msg "Continuing anyway but DHCP3 server might not start correctly" fi

Перед запуском демона DHCP3 фрагмент должен войти в сценарий запуска внутри части case ... start). Конечно, вы должны настроить время ожидания и количество попыток соответствовать вашей среде (сколько времени занимает максимум для br0 для получения IP-адреса?)

2
ответ дан 31 July 2018 в 11:06
  • 1
    Это определенно на верном пути. Я поместил это сразу после «case» $ 1 ». в начале) & quot; в "/etc/init.d/dhcp3-server" однако условие «/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; кажется, даже без интерфейса моста через Интернет. Ввод "/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; в терминал не выводит. – user2009 8 September 2010 в 15:46
  • 2
    Кроме того, хотя тривиально два «log_warning_msg» в конце скрипта будут отображаться независимо от успеха и сбоя. будут ли они лучше внутри журнала с инструкцией стиля if (max_attempts = n), чтобы правильно отображать эти сообщения при ошибке? – user2009 8 September 2010 в 15:46
  • 3
    Также нормальный интерфейс моста занимает дополнительные 5-10 секунд после загрузки интерфейсов, достаточно долго для отказа dhcp3-сервера. – user2009 8 September 2010 в 15:49
  • 4
    @ user2009 Что касается строки grep -q: 1. Я думаю, что матч терпит неудачу, потому что мост получает адрес IPv6, как только он встает. Если вас интересует только адрес IPv4, просто замените строку grep на grep -q 'inet addr:' (уже сделано выше); в противном случае необходимо найти более сложное регулярное выражение, соответствующее всем возможным окончательным IP-адресам вашего моста. 2. Параметр -q подавляет вывод (как > /dev/null), – Riccardo Murri 8 September 2010 в 20:28
  • 5
    @ user2009 благодарит за комментарий к log_warning_msg; Я думаю, что исправил его в соответствии с вашим предложением – Riccardo Murri 8 September 2010 в 20:29

Вы можете изменить сценарий запуска /etc/init.d/dhcp3-server, чтобы ожидать, что IP-адрес будет доступен на br0. Например: (Предупреждение: непроверенный код!)

# wait 5 secs between br0-ready tests wait_time_between_probes=5 # maximum number of attempts (i.e., timeout) max_attempts=10 log_progress_msg "Waiting for br0 to get an IP address" for n in $(seq 1 $max_attempts); do if /sbin/ifconfig br0 | egrep -q "inet addr:" ; then # IP address ready on br0, exit loop break else sleep $wait_time_between_probes fi done if [ "$n" = "$max_attempts" ]; then log_warning_msg "Maximum number of attempts reached, but br0 has no IP address yet" log_warning_msg "Continuing anyway but DHCP3 server might not start correctly" fi

Перед запуском демона DHCP3 фрагмент должен войти в сценарий запуска внутри части case ... start). Конечно, вы должны настроить время ожидания и количество попыток соответствовать вашей среде (сколько времени занимает максимум для br0 для получения IP-адреса?)

2
ответ дан 31 July 2018 в 12:04
  • 1
    Это определенно на верном пути. Я поместил это сразу после «case» $ 1 ». в начале) & quot; в "/etc/init.d/dhcp3-server" однако условие «/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; кажется, даже без интерфейса моста через Интернет. Ввод "/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; в терминал не выводит. – user2009 8 September 2010 в 15:46
  • 2
    Кроме того, хотя тривиально два «log_warning_msg» в конце скрипта будут отображаться независимо от успеха и сбоя. будут ли они лучше внутри журнала с инструкцией стиля if (max_attempts = n), чтобы правильно отображать эти сообщения при ошибке? – user2009 8 September 2010 в 15:46
  • 3
    Также нормальный интерфейс моста занимает дополнительные 5-10 секунд после загрузки интерфейсов, достаточно долго для отказа dhcp3-сервера. – user2009 8 September 2010 в 15:49
  • 4
    @ user2009 Что касается строки grep -q: 1. Я думаю, что матч терпит неудачу, потому что мост получает адрес IPv6, как только он встает. Если вас интересует только адрес IPv4, просто замените строку grep на grep -q 'inet addr:' (уже сделано выше); в противном случае необходимо найти более сложное регулярное выражение, соответствующее всем возможным окончательным IP-адресам вашего моста. 2. Параметр -q подавляет вывод (как > /dev/null), – Riccardo Murri 8 September 2010 в 20:28
  • 5
    @ user2009 благодарит за комментарий к log_warning_msg; Я думаю, что исправил его в соответствии с вашим предложением – Riccardo Murri 8 September 2010 в 20:29

Вы можете изменить сценарий запуска /etc/init.d/dhcp3-server, чтобы ожидать, что IP-адрес будет доступен на br0. Например: (Предупреждение: непроверенный код!)

# wait 5 secs between br0-ready tests wait_time_between_probes=5 # maximum number of attempts (i.e., timeout) max_attempts=10 log_progress_msg "Waiting for br0 to get an IP address" for n in $(seq 1 $max_attempts); do if /sbin/ifconfig br0 | egrep -q "inet addr:" ; then # IP address ready on br0, exit loop break else sleep $wait_time_between_probes fi done if [ "$n" = "$max_attempts" ]; then log_warning_msg "Maximum number of attempts reached, but br0 has no IP address yet" log_warning_msg "Continuing anyway but DHCP3 server might not start correctly" fi

Перед запуском демона DHCP3 фрагмент должен войти в сценарий запуска внутри части case ... start). Конечно, вы должны настроить время ожидания и количество попыток соответствовать вашей среде (сколько времени занимает максимум для br0 для получения IP-адреса?)

2
ответ дан 2 August 2018 в 04:31
  • 1
    Это определенно на верном пути. Я поместил это сразу после «case» $ 1 ». в начале) & quot; в "/etc/init.d/dhcp3-server" однако условие «/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; кажется, даже без интерфейса моста через Интернет. Ввод "/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; в терминал не выводит. – user2009 8 September 2010 в 15:46
  • 2
    Кроме того, хотя тривиально два «log_warning_msg» в конце скрипта будут отображаться независимо от успеха и сбоя. будут ли они лучше внутри журнала с инструкцией стиля if (max_attempts = n), чтобы правильно отображать эти сообщения при ошибке? – user2009 8 September 2010 в 15:46
  • 3
    Также нормальный интерфейс моста занимает дополнительные 5-10 секунд после загрузки интерфейсов, достаточно долго для отказа dhcp3-сервера. – user2009 8 September 2010 в 15:49
  • 4
    @ user2009 Что касается строки grep -q: 1. Я думаю, что матч терпит неудачу, потому что мост получает адрес IPv6, как только он встает. Если вас интересует только адрес IPv4, просто замените строку grep на grep -q 'inet addr:' (уже сделано выше); в противном случае необходимо найти более сложное регулярное выражение, соответствующее всем возможным окончательным IP-адресам вашего моста. 2. Параметр -q подавляет вывод (как > /dev/null), – Riccardo Murri 8 September 2010 в 20:28
  • 5
    @ user2009 благодарит за комментарий к log_warning_msg; Я думаю, что исправил его в соответствии с вашим предложением – Riccardo Murri 8 September 2010 в 20:29

Вы можете изменить сценарий запуска /etc/init.d/dhcp3-server, чтобы ожидать, что IP-адрес будет доступен на br0. Например: (Предупреждение: непроверенный код!)

# wait 5 secs between br0-ready tests wait_time_between_probes=5 # maximum number of attempts (i.e., timeout) max_attempts=10 log_progress_msg "Waiting for br0 to get an IP address" for n in $(seq 1 $max_attempts); do if /sbin/ifconfig br0 | egrep -q "inet addr:" ; then # IP address ready on br0, exit loop break else sleep $wait_time_between_probes fi done if [ "$n" = "$max_attempts" ]; then log_warning_msg "Maximum number of attempts reached, but br0 has no IP address yet" log_warning_msg "Continuing anyway but DHCP3 server might not start correctly" fi

Перед запуском демона DHCP3 фрагмент должен войти в сценарий запуска внутри части case ... start). Конечно, вы должны настроить время ожидания и количество попыток соответствовать вашей среде (сколько времени занимает максимум для br0 для получения IP-адреса?)

2
ответ дан 4 August 2018 в 21:05
  • 1
    Это определенно на верном пути. Я поместил это сразу после «case» $ 1 ». в начале) & quot; в "/etc/init.d/dhcp3-server" однако условие «/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; кажется, даже без интерфейса моста через Интернет. Ввод "/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; в терминал не выводит. – user2009 8 September 2010 в 15:46
  • 2
    Кроме того, хотя тривиально два «log_warning_msg» в конце скрипта будут отображаться независимо от успеха и сбоя. будут ли они лучше внутри журнала с инструкцией стиля if (max_attempts = n), чтобы правильно отображать эти сообщения при ошибке? – user2009 8 September 2010 в 15:46
  • 3
    Также нормальный интерфейс моста занимает дополнительные 5-10 секунд после загрузки интерфейсов, достаточно долго для отказа dhcp3-сервера. – user2009 8 September 2010 в 15:49
  • 4
    @ user2009 Что касается строки grep -q: 1. Я думаю, что матч терпит неудачу, потому что мост получает адрес IPv6, как только он встает. Если вас интересует только адрес IPv4, просто замените строку grep на grep -q 'inet addr:' (уже сделано выше); в противном случае необходимо найти более сложное регулярное выражение, соответствующее всем возможным окончательным IP-адресам вашего моста. 2. Параметр -q подавляет вывод (как > /dev/null), – Riccardo Murri 8 September 2010 в 20:28
  • 5
    @ user2009 благодарит за комментарий к log_warning_msg; Я думаю, что исправил его в соответствии с вашим предложением – Riccardo Murri 8 September 2010 в 20:29

Вы можете изменить сценарий запуска /etc/init.d/dhcp3-server, чтобы ожидать, что IP-адрес будет доступен на br0. Например: (Предупреждение: непроверенный код!)

# wait 5 secs between br0-ready tests wait_time_between_probes=5 # maximum number of attempts (i.e., timeout) max_attempts=10 log_progress_msg "Waiting for br0 to get an IP address" for n in $(seq 1 $max_attempts); do if /sbin/ifconfig br0 | egrep -q "inet addr:" ; then # IP address ready on br0, exit loop break else sleep $wait_time_between_probes fi done if [ "$n" = "$max_attempts" ]; then log_warning_msg "Maximum number of attempts reached, but br0 has no IP address yet" log_warning_msg "Continuing anyway but DHCP3 server might not start correctly" fi

Перед запуском демона DHCP3 фрагмент должен войти в сценарий запуска внутри части case ... start). Конечно, вы должны настроить время ожидания и количество попыток соответствовать вашей среде (сколько времени занимает максимум для br0 для получения IP-адреса?)

2
ответ дан 6 August 2018 в 04:36
  • 1
    Это определенно на верном пути. Я поместил это сразу после «case» $ 1 ». в начале) & quot; в "/etc/init.d/dhcp3-server" однако условие «/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; кажется, даже без интерфейса моста через Интернет. Ввод "/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; в терминал не выводит. – user2009 8 September 2010 в 15:46
  • 2
    Кроме того, хотя тривиально два «log_warning_msg» в конце скрипта будут отображаться независимо от успеха и сбоя. будут ли они лучше внутри журнала с инструкцией стиля if (max_attempts = n), чтобы правильно отображать эти сообщения при ошибке? – user2009 8 September 2010 в 15:46
  • 3
    Также нормальный интерфейс моста занимает дополнительные 5-10 секунд после загрузки интерфейсов, достаточно долго для отказа dhcp3-сервера. – user2009 8 September 2010 в 15:49
  • 4
    @ user2009 Что касается строки grep -q: 1. Я думаю, что матч терпит неудачу, потому что мост получает адрес IPv6, как только он встает. Если вас интересует только адрес IPv4, просто замените строку grep на grep -q 'inet addr:' (уже сделано выше); в противном случае необходимо найти более сложное регулярное выражение, соответствующее всем возможным окончательным IP-адресам вашего моста. 2. Параметр -q подавляет вывод (как > /dev/null), – Riccardo Murri 8 September 2010 в 20:28
  • 5
    @ user2009 благодарит за комментарий к log_warning_msg; Я думаю, что исправил его в соответствии с вашим предложением – Riccardo Murri 8 September 2010 в 20:29

Вы можете изменить сценарий запуска /etc/init.d/dhcp3-server, чтобы ожидать, что IP-адрес будет доступен на br0. Например: (Предупреждение: непроверенный код!)

# wait 5 secs between br0-ready tests wait_time_between_probes=5 # maximum number of attempts (i.e., timeout) max_attempts=10 log_progress_msg "Waiting for br0 to get an IP address" for n in $(seq 1 $max_attempts); do if /sbin/ifconfig br0 | egrep -q "inet addr:" ; then # IP address ready on br0, exit loop break else sleep $wait_time_between_probes fi done if [ "$n" = "$max_attempts" ]; then log_warning_msg "Maximum number of attempts reached, but br0 has no IP address yet" log_warning_msg "Continuing anyway but DHCP3 server might not start correctly" fi

Перед запуском демона DHCP3 фрагмент должен войти в сценарий запуска внутри части case ... start). Конечно, вы должны настроить время ожидания и количество попыток соответствовать вашей среде (сколько времени занимает максимум для br0 для получения IP-адреса?)

2
ответ дан 7 August 2018 в 22:46
  • 1
    Это определенно на верном пути. Я поместил это сразу после «case» $ 1 ». в начале) & quot; в "/etc/init.d/dhcp3-server" однако условие «/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; кажется, даже без интерфейса моста через Интернет. Ввод "/ sbin / ifconfig br0 | fgrep -q "addr:" & quot; в терминал не выводит. – user2009 8 September 2010 в 15:46
  • 2
    Кроме того, хотя тривиально два «log_warning_msg» в конце скрипта будут отображаться независимо от успеха и сбоя. будут ли они лучше внутри журнала с инструкцией стиля if (max_attempts = n), чтобы правильно отображать эти сообщения при ошибке? – user2009 8 September 2010 в 15:46
  • 3
    Также нормальный интерфейс моста занимает дополнительные 5-10 секунд после загрузки интерфейсов, достаточно долго для отказа dhcp3-сервера. – user2009 8 September 2010 в 15:49
  • 4
    @ user2009 Что касается строки grep -q: 1. Я думаю, что матч терпит неудачу, потому что мост получает адрес IPv6, как только он встает. Если вас интересует только адрес IPv4, просто замените строку grep на grep -q 'inet addr:' (уже сделано выше); в противном случае необходимо найти более сложное регулярное выражение, соответствующее всем возможным окончательным IP-адресам вашего моста. 2. Параметр -q подавляет вывод (как > /dev/null), – Riccardo Murri 8 September 2010 в 20:28
  • 5
    @ user2009 благодарит за комментарий к log_warning_msg; Я думаю, что исправил его в соответствии с вашим предложением – Riccardo Murri 8 September 2010 в 20:29

Другие вопросы по тегам:

Похожие вопросы: