Перезапуск DHCPd сервера с WEB страницы.

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
METAJIJI
рядовой
Сообщения: 19
Зарегистрирован: 2009-09-08 21:12:05

Перезапуск DHCPd сервера с WEB страницы.

Непрочитанное сообщение METAJIJI » 2009-10-06 0:01:09

Кому нибудь доводилось решать такую штуку? Спросите зачем это нужно делать? :shock: отвечу, у нас в локалке для учета пользователей я написал простенькую админку на PHP+MySQL, где хранятся данные о пользователях, ФИО, IP, MAC и т.д. в сети стоит управляемый свитч, дабы работать было удобнее вот с этой админки можно добавить/удалить связку IP+MAC+Port со свитча. И вот некоторые не умеют настраивать сетевое подключение, а свитч их безбожно банит за это. Я решил запустить DHCP в сети и в принципе все было бы ничего, админка создает конфиг для DHCPd, и если ручками перезапустить его, то все хорошо. Но вот было бы просто прекрасно, если бы DHCPd перезапускался сам, без лишних пинков по SSH.

Поиски по интернету дали только это

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

$output = shell_exec('/usr/local/etc/rc.d/isc-dhcpd stop');
echo "<pre>$output</pre>";
$output = shell_exec('/usr/local/etc/rc.d/isc-dhcpd start');
echo "<pre>$output</pre>";
$output = shell_exec('/usr/local/etc/rc.d/isc-dhcpd status');
echo "<pre>$output</pre>";
Как результат работы этих манипуляций получаем:
net.inet.ip.forwarding: 1
Stopping dhcpd.

net.inet.ip.forwarding: 1
Starting dhcpd.

net.inet.ip.forwarding: 1
dhcpd is not running.
В общем сервер после этого лежит, и пока не зайдешь по SSH под root'ом и не подопнешь он не запускается :)

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

cd /usr/local/etc/rc.d/
./isc-dhcpd start
Может кто-нибудь поделится опытом?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Перезапуск DHCPd сервера с WEB страницы.

Непрочитанное сообщение paradox » 2009-10-06 0:08:26

в крон засунте простенький скрипт который сверяет последнее обновление файла dhcpd демона
и если были изменения то перезапускает демона

METAJIJI
рядовой
Сообщения: 19
Зарегистрирован: 2009-09-08 21:12:05

Re: Перезапуск DHCPd сервера с WEB страницы.

Непрочитанное сообщение METAJIJI » 2009-10-06 0:16:16

paradox писал(а):в крон засунте простенький скрипт который сверяет последнее обновление файла dhcpd демона
и если были изменения то перезапускает демона
если можно поподробнее опишите :) ибо у меня знания FreeBSD на уровне пользователя... :"": , хотя я активно читаю статьи и форум Лисяры :)

P.S. с меня :drinks:

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Перезапуск DHCPd сервера с WEB страницы.

Непрочитанное сообщение paradox » 2009-10-06 0:28:06

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

$output = shell_exec('sh /usr/local/etc/rc.d/isc-dhcpd stop');
echo "<pre>$output</pre>";
$output = shell_exec('sh /usr/local/etc/rc.d/isc-dhcpd start');
echo "<pre>$output</pre>";
$output = shell_exec('sh /usr/local/etc/rc.d/isc-dhcpd status');
echo "<pre>$output</pre>";
попробуйте еще так
если нет то с попробуйте

по второму пунтку мне тяжело думать
может кто мимо проходящий набросает мою идею

METAJIJI
рядовой
Сообщения: 19
Зарегистрирован: 2009-09-08 21:12:05

Re: Перезапуск DHCPd сервера с WEB страницы.

Непрочитанное сообщение METAJIJI » 2009-10-06 0:40:22

Однако ругается, и просит root

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

cat /var/log/messages | grep dhcpd
Oct 6 05:32:49 opi9 root: /usr/local/etc/rc.d/isc-dhcpd: WARNING: unable to change permissions of /var/db/dhcpd/dhcpd.leases
Oct 6 05:32:49 opi9 dhcpd: you must be root to set user
Выходит со странички перезапустить не получится... А вот насчет cron хорошая мысль. Раз в неделю Cron у меня собирает конфиги с Wi-fi точек и со свитча конфиги... Буду думать, как осуществить запуск по изменению файла...
Спасибо, что подсказали!

METAJIJI
рядовой
Сообщения: 19
Зарегистрирован: 2009-09-08 21:12:05

Re: Перезапуск DHCPd сервера с WEB страницы.

Непрочитанное сообщение METAJIJI » 2009-10-06 6:24:21

Путь решения найден! Оговорюсь сразу, немного нестандартный подход в осуществлении, использовал и crontab и запуск *.sh файлов с WEB страницы

Чтобы перезапустить сервер:
1. Нужно остановить его, делаем это с WEB страницы добавляем в PHP следующий код:

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

//показать результат
$output = shell_exec('/usr/local/etc/rc.d/isc-dhcpd stop');
echo "<pre>$output</pre>";
$output = shell_exec('/usr/local/etc/rc.d/isc-dhcpd status');
echo "<pre>$output</pre>";
2. Теперь нужно запустить остановленный демон, делаем это через crontab, в /etc/crontab запишем в конец следующее:

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

# пытаться запустить dhcpd снова если вдруг демон завершит работу.
* * * * * root /usr/local/etc/rc.d/isc-dhcpd start

Аватара пользователя
GRooVE
ст. сержант
Сообщения: 309
Зарегистрирован: 2009-01-04 10:33:43
Откуда: Odessa, UA
Контактная информация:

Re: Перезапуск DHCPd сервера с WEB страницы.

Непрочитанное сообщение GRooVE » 2009-10-06 6:49:40

извиняюсь, но какое-то нерациональное у Вас решение проблемы
зачем каждую минуту пытаться запустить dhcpd? имхо пустая трата ресурсов и лишняя работа
извините за столь грубое сравнение, но это равносильно тому, чтобы каждую минуту бегать открывать входную дверь для того, чтобы посмотреть не пришел ли к Вам кто-нибудь, вместо того, чтобы просто ожидать звонка в двери
Вам же уважаемый paradox сказал как это будет лучше сделать
от себя могу добавить: как вариант, используйте дату и время редактирования файла для принятия решения о перезагрузке демона
либо еще как вариант - создавайте пустой файл, который будет являтся флагом для перезагрузки dhcpd
вот Вам простейший скрипт, который проверяет наличие пустого файла /etc/dhcpd.flag, и в случае его присутствия - перегружает службу.

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

#!/bin/sh

if [ -f /etc/dhcpd.flag ]; then
  rm -f /etc/dhcpd.flag
  /usr/local/etc/rc.d/dhcpd restart
fi

METAJIJI
рядовой
Сообщения: 19
Зарегистрирован: 2009-09-08 21:12:05

Re: Перезапуск DHCPd сервера с WEB страницы.

Непрочитанное сообщение METAJIJI » 2009-10-06 13:26:45

Спасибо за ответ, но не до конца понятно куда этот скрипт девать? Точно так же в crontab записать? И через каждую минуту его юзать, по моему тоже самое получается, что и в моем варианте. Ведь при попытке запуска демона, скрипт вернет ошибку

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

dhcpd already running? (pid=6285).
и ничего не предпримет... Тогда зачем эти финты ушами с датой изменения файла? Или сам crontab умеет следить за этим?
Что-то я совсем не запутался...

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: Перезапуск DHCPd сервера с WEB страницы.

Непрочитанное сообщение paradox » 2009-10-06 13:30:58

а я говорил о перезапуске DHCP хотя бы раз в 5 минут
с проверкой когда последний раз модифицировался его конфиг
елси больше чем пять минут назад значит ничего не делать
если меньше то перезапустить

METAJIJI
рядовой
Сообщения: 19
Зарегистрирован: 2009-09-08 21:12:05

Re: Перезапуск DHCPd сервера с WEB страницы.

Непрочитанное сообщение METAJIJI » 2009-10-06 17:59:42

Как я понимаю в PHP скрипте нужно будет лишь предусмотреть создание флагового файла, и затем прописать в crontab запуск скрипта, который предложил уважаемый GRooVE. Скрипт будет проверять наличие созданного файла, и если он существует, удалять файл+перезапускать DHCPd.