управление dhcpd через html/php страничку

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
QweЯty
лейтенант
Сообщения: 795
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

управление dhcpd через html/php страничку

Непрочитанное сообщение QweЯty » 2011-03-08 12:32:20

как оное можно сделать?

понимаю что все сводиться добавлением/удалением в конфиг строки вида:

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

host Sylk {
hardware ethernet 00:17:c4:32:5d:71;
fixed-address 192.168.40.140;
}
и последующим рестартом dhcpd сервера.

но не совсем понимаю как оное сделать...

каки где хранить данные для этого?
в sql базе? по другому как то?
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение

Хостинговая компания 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/

Аватара пользователя
QweЯty
лейтенант
Сообщения: 795
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

Re: управление dhcpd через html/php страничку

Непрочитанное сообщение QweЯty » 2011-03-08 13:32:49

привел пока конфиг dhcpd к такому виду:

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

option domain-name "SambuKa.hostel3.ru";
default-lease-time 720000;
min-lease-time 720000;
max-lease-time 720000;
ddns-update-style none;
authoritative;
log-facility local7;

subnet 192.168.100.0 netmask 255.255.255.0 {
    option routers 192.168.100.1;
    option subnet-mask 255.255.255.0;
    option domain-name-servers 192.168.100.1;
pool {
    range 192.168.100.5 192.168.100.254;
    deny unknown-clients;
}
}

include ipleases.conf;
а в ipleases.conf

писать уже все

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

host Sylk {
hardware ethernet 00:17:c4:32:5d:71;
fixed-address 192.168.100.140;
}
на основе этого
создал бд с тремя параметрами:
iphostname
iphostethen
iphostadres

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

CREATE DATABASE `adminka` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
USE `adminka`;

CREATE TABLE IF NOT EXISTS `dhcpd` (
  `iphostname` varchar(50) NOT NULL,
  `iphostethen` varchar(16) NOT NULL,
  `iphostadres` varchar(15) NOT NULL,
  PRIMARY KEY (`iphostname`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `dhcpd` (`iphostname`, `iphostethen`, `iphostadres`) VALUES ('microsf-04fe8g', '00:17:c4:32:5d:71', '192.168.100.140');
а дальше пока завис....
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение


snorlov
подполковник
Сообщения: 3829
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: управление dhcpd через html/php страничку

Непрочитанное сообщение snorlov » 2011-03-08 18:34:03

Есть же webmin, а вы велосипед создаете

Аватара пользователя
QweЯty
лейтенант
Сообщения: 795
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

Re: управление dhcpd через html/php страничку

Непрочитанное сообщение QweЯty » 2011-03-08 19:09:48

хех, для меня уже привычно в ssh сидеть, да и лучше и безопаснее..

но я закончу скоро и все останоться тут.... вот и переделываю для обычного юзверя...

думаю вынести это в несколько страниц:

db.php подключение

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

<?php
$db=mysql_pconnect("localhost", "root", "********");
  if (!$db)
    {
      echo "database error";
      exit;
    }
mysql_select_db("dhcpd");
?>

add.php добавление

radist04ka# cat add.php

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

<?php
include("db.php");
$itog = array('iphostname'=>$_POST['iphostname'],'iphostethen'=>$_POST['iphostethen'],'iphostadres'=>$_POST['iphostadres']);
if ( (! isset( $itog['iphostname'] ))||(! isset( $itog['iphostethen'] ))||(! isset( $itog['iphostadres'] )))
  $m = "Введите Hostname, MAC, IP";
 elseif ( ($_POST['iphostadres']=='')||($_POST['iphostethen']=='')||($_POST['iphostadres']==''))
  $m = "Вы ввели пустое значение Hostname, MAC, IP \r <br /> Пример:\r <br />IP:Sylk-PC; MAC:00:17:c4:32:5d:71; IP:192.168.100.140";
 else
  $m = 'Вы ввели: '.$itog['iphostname'].' '.$itog['iphostethen'].' '.$itog['iphostadres'].'';
  mysql_query("INSERT INTO dhcpd (iphostname, iphostethen, iphostadres) VALUES ('".$itog['iphostname']."', '".$itog['iphostethen']."', '".$itog['iphostadres']."')");
?>
<html>
<head>
<title>Добавление пользователя</title>
</head>
<body>
<center>
<h1><?php echo $m?></h1>
<form action="<?php echo $PHP_SELF?>" method="post">
<p>Hotname:
<input name="iphostname" type="text" size="20" maxlength="50">
<p>MAC адрес:
<input name="iphostethen" type="text" size="17" maxlength="16">
<p>IP адрес:
<input name="iphostadres" type="text" size="20" maxlength="15">
<p>
<input type="submit" name="add" value="Добавить">
<INPUT TYPE=reset VALUE="Очистить">
<input type="button" value="Назад" onclick="history.back()" />
</form>
</br>
<table border="0">
<td align="right">Hostname только <b>Латиницей</b></br></td></tr>
<td align="right">MAC в виде 00:17:c4:32:5d:71</br></td></tr>
<td align="right">IP в виде 192.168.100.140</td>
</table>
</center>
</body>
</html>
index.php

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

<html>
<head>
<title>Список адресов</title>
</head>
<body>
<form action='del.php' method='post'>
<?php
include("db.php");
$query = "SELECT * FROM dhcpd";
$result = mysql_query ( $query );
$n = mysql_num_rows ( $result );
for ( $i=0; $i<$n; $i++ )
  {
   $row = mysql_fetch_array($result);
   echo "<p><b><input type='checkbox' name='".($i+1)."' value='1'>";
   echo " ".($i+1).". Host: $row[iphostname]</b></br>";
   echo "<b>MAC адрес:</b> $row[iphostethen]<br>";
   echo "<b>IP адрес:</b> $row[iphostadres]</p>";
   }
if ( $n == 0 ) echo "Никого нет.";
mysql_close ( $db );
?>
</form>
<center>
<p>
<FORM ACTION="add.php">
<INPUT TYPE=submit VALUE="Добавить пользователя">
</FORM>
<FORM ACTION="del.php">
<INPUT TYPE=submit VALUE="Удалить пользователя">
</FORM></p>
</center>
</body>
</html>
не нашел тока как сделать чтобы формы были на одной полосе а не одна над другой...
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение

Аватара пользователя
QweЯty
лейтенант
Сообщения: 795
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

Re: управление dhcpd через html/php страничку

Непрочитанное сообщение QweЯty » 2011-03-08 21:48:38

тока вопрос, риторический, самому себе...

а как узнать что мы выделили какой-то чекбоск... чтобы удалить данный хост/ип

UPD.
reboot.php

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

<?php
include("db.php");
$query = "SELECT * FROM dhcpd";
$result = mysql_query($query);
$fp = fopen("/usr/local/etc/ipleases.conf", "w");
if (!$fp)
die("Ты намутил что-то не то... ведь всё работало");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
$iphostname=$row[0];
$iphostethen=$row[1];
$iphostadres=$row[2];
$filed = "host $iphostname {
hardware ethernet $iphostethen;
fixed-address $iphostadres;
}
";
fwrite($fp, $filed);
}
mysql_close ( $db );
fclose($fp);
?>
вопрос 1 решен. остался 2: а как из под апачи перезапустить сервис то?

и p.s. как теперь обьединить теперь эти два скрипта?
restart.php и index.php
а то открывается голая страница которая ниче не делает, кроме тог что пишет в файл:)
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение

Аватара пользователя
QweЯty
лейтенант
Сообщения: 795
Зарегистрирован: 2010-10-12 0:15:15
Откуда: Таганрог, Калининград
Контактная информация:

Re: управление dhcpd через html/php страничку

Непрочитанное сообщение QweЯty » 2011-03-09 0:23:35

и так:
db.php

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

<?php
$db=mysql_pconnect("localhost", "****", "************");
  if (!$db)
    {
      echo "Ты намутил что-то не то... либо упала база.... либо хз";
      exit;
    }
mysql_select_db("dhcpd");
?>
add.php

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

<?php
include("db.php");
$itog = array('iphostname'=>$_POST['iphostname'],'iphostethen'=>$_POST['iphostethen'],'iphostadres'=>$_POST['iphostadres']);
if ( (! isset( $itog['iphostname'] ))||(! isset( $itog['iphostethen'] ))||(! isset( $itog['iphostadres'] )))
  $m = "Введите Hostname, MAC, IP";
 elseif ( ($_POST['iphostadres']=='')||($_POST['iphostethen']=='')||($_POST['iphostadres']==''))
  $m = "Вы ввели пустое значение Hostname, MAC, IP \r <br /> Пример:\r <br />IP:Sylk-PC; MAC:00:17:c4:32:5d:71; IP:192.168.100.140";
 else
  $m = 'Вы ввели: '.$itog['iphostname'].' '.$itog['iphostethen'].' '.$itog['iphostadres'].'';
  mysql_query("INSERT INTO dhcpd (iphostname, iphostethen, iphostadres) VALUES ('".$itog['iphostname']."', '".$itog['iphostethen']."', '".$itog['iphostadres']."')");
  mysql_close ( $db );
?>
<html>
<head>
<title>Добавление пользователя</title>
</head>
<body>
<center>
<h1><?php echo $m?></h1>
<form action="<?php echo $PHP_SELF?>" method="post">
<p>Hotname:
<input name="iphostname" type="text" size="20" maxlength="50">
<p>MAC адрес:
<input name="iphostethen" type="text" size="17" maxlength="17">
<p>IP адрес:
<input name="iphostadres" type="text" size="20" maxlength="15" value="192.168.100.">
<p>
<div style="float:center">
<input type="submit" name="add" value="Добавить">
<INPUT TYPE=reset VALUE="Очистить">
</div>
</form>
<div style="float:center">
<form action="index.php">
<input type="submit" value="Назад">
</form></div>
</br>
<table border="0">
<td align="right">Hostname только <b>Латиницей</b></br></td></tr>
<td align="right">MAC в виде 00:17:c4:32:5d:71</br></td></tr>
<td align="right">IP в виде 192.168.100.140</td>
</table>
</center>
</body>
</html>
index.php

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

<html>
<head>
<title>Список адресов</title>
</head>
<body>
<ul style="display:block; list-style:none;">
<li><form action='del.php' method='post'>
<?php
include("db.php");
$query = "SELECT * FROM dhcpd";
$result = mysql_query ( $query );
$n = mysql_num_rows ( $result );
for ( $i=0; $i<$n; $i++ )
  {
   $row = mysql_fetch_array($result);
   echo '<p><b><input type="checkbox" name="'.$row['id'].'" value="'.$row['id'].'">';
   echo " ".($i+1).". Host: $row[iphostname]</b></br>";
   echo "<b>MAC адрес:</b> $row[iphostethen]<br>";
   echo "<b>IP адрес:</b> $row[iphostadres]</p>";
   }
if ( $n == 0 ) echo "Никого нет.";
mysql_close ( $db );
?>
<INPUT TYPE="submit" VALUE="Удалить пользователя">
</FORM></li>
<li><FORM ACTION="add.php">
<INPUT TYPE="submit" VALUE="Добавить пользователя">
</FORM></li>
<li><FORM ACTION="reboot.php">
<INPUT TYPE="submit" VALUE="Применить изменения">
</FORM></li>
</ul>
</body>
</html>

del.php

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

<?php
include("db.php");
foreach($_POST as $p)
{
    $id = $p;
    {
      mysql_query("DELETE FROM dhcpd WHERE id = '$id'");
      mysql_close ( $db );
    }
}
mysql_close ( $db );
header('Location:index.php');
?>
reboot.php

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

<?php
include("db.php");
$query = "SELECT * FROM dhcpd";
$result = mysql_query($query);
$fp = fopen("/usr/local/etc/ipleases.conf", "w");
if (!$fp)
die("Ты намутил что-то не то... ведь всё работало");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
$iphostname=$row[0];
$iphostethen=$row[1];
$iphostadres=$row[2];
$filed = "host $iphostname {
hardware ethernet $iphostethen;
fixed-address $iphostadres;
}
";
fwrite($fp, $filed);
}
mysql_close ( $db );
fclose($fp);
header('Location:index.php');
?>
криво но работает, может кому нидубь да пригодиться. гораздо удобнее управлять :)

несколько вопросов:
1. при нажатии на кнопку "добавить" из index.php добавляется пустая/ое таблица/поле, наверное пустые поля все же... как исправить так и не нашел.
2. почему то не удается удалить сразу несколько выделенных чекбоксов. думаю это из-за того что поиск ведется по foreach.
3. напрочь сбиты кнопки, честно говоря пофиг, но поправить не смог.
4. как все таки запустить/перезапустить сервер то....из под апачи...

ну вроде все...
Инженер не смотрит порно. Он ведет расчет бабы на усталость © Федор Сумкин
Изображение