Страница 1 из 1
Перезапуск DHCPd сервера с WEB страницы.
Добавлено: 2009-10-06 0:01:09
METAJIJI
Кому нибудь доводилось решать такую штуку? Спросите зачем это нужно делать?

отвечу, у нас в локалке для учета пользователей я написал простенькую админку на 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'ом и не подопнешь он не запускается
Может кто-нибудь поделится опытом?
Re: Перезапуск DHCPd сервера с WEB страницы.
Добавлено: 2009-10-06 0:08:26
paradox
в крон засунте простенький скрипт который сверяет последнее обновление файла dhcpd демона
и если были изменения то перезапускает демона
Re: Перезапуск DHCPd сервера с WEB страницы.
Добавлено: 2009-10-06 0:16:16
METAJIJI
paradox писал(а):в крон засунте простенький скрипт который сверяет последнее обновление файла dhcpd демона
и если были изменения то перезапускает демона
если можно поподробнее опишите

ибо у меня знания FreeBSD на уровне пользователя...

, хотя я активно читаю статьи и форум Лисяры
P.S. с меня

Re: Перезапуск DHCPd сервера с WEB страницы.
Добавлено: 2009-10-06 0:28:06
paradox
Код: Выделить всё
$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>";
попробуйте еще так
если нет то с
попробуйте
по второму пунтку мне тяжело думать
может кто мимо проходящий набросает мою идею
Re: Перезапуск DHCPd сервера с WEB страницы.
Добавлено: 2009-10-06 0:40:22
METAJIJI
Однако ругается, и просит root
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 точек и со свитча конфиги... Буду думать, как осуществить запуск по изменению файла...
Спасибо, что подсказали!
Re: Перезапуск DHCPd сервера с WEB страницы.
Добавлено: 2009-10-06 6:24:21
METAJIJI
Путь решения найден! Оговорюсь сразу, немного нестандартный подход в осуществлении, использовал и 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
Re: Перезапуск DHCPd сервера с WEB страницы.
Добавлено: 2009-10-06 6:49:40
GRooVE
извиняюсь, но какое-то нерациональное у Вас решение проблемы
зачем каждую минуту пытаться запустить 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
Re: Перезапуск DHCPd сервера с WEB страницы.
Добавлено: 2009-10-06 13:26:45
METAJIJI
Спасибо за ответ, но не до конца понятно куда этот скрипт девать? Точно так же в crontab записать? И через каждую минуту его юзать, по моему тоже самое получается, что и в моем варианте. Ведь при попытке запуска демона, скрипт вернет ошибку
и ничего не предпримет... Тогда зачем эти финты ушами с датой изменения файла? Или сам crontab умеет следить за этим?
Что-то я совсем не запутался...
Re: Перезапуск DHCPd сервера с WEB страницы.
Добавлено: 2009-10-06 13:30:58
paradox
а я говорил о перезапуске DHCP хотя бы раз в 5 минут
с проверкой когда последний раз модифицировался его конфиг
елси больше чем пять минут назад значит ничего не делать
если меньше то перезапустить
Re: Перезапуск DHCPd сервера с WEB страницы.
Добавлено: 2009-10-06 17:59:42
METAJIJI
Как я понимаю в PHP скрипте нужно будет лишь предусмотреть создание флагового файла, и затем прописать в crontab запуск скрипта, который предложил уважаемый GRooVE. Скрипт будет проверять наличие созданного файла, и если он существует, удалять файл+перезапускать DHCPd.