<Private> Re: dynamic ip ok for NFS/LDAP servers? Network Gurus?

Reindl Harald h.reindl at thelounge.net
Fri Nov 30 18:38:51 UTC 2012


Am 30.11.2012 19:23, schrieb Joe Wulf:
> Reindl,
> 
> I was instantly thrilled to see you had a process (script?) for
> auto-generating dhcpd.conf in concert with a DNS database.
> Is it possible for you to share the scripts and/or documentation for how 
> you generate, implement and/or manage your
> dns and dhcp configurations?
> 
> I've been working a project that would greatly benefit from not having 
> to reinvent the wheel

the dhcp-wheel is simple, see below, you need a db-layer
or replace some commands to work directly with php-mysqli

write your config with base-values and a placeholder
for the generated stuff somewhere else, generate the
new config file based on the database and write it to
disk if it differs from the old one an restart the service

the dns-wheel i can not share because it is based on inernal
libraries and our own cms-system and hardly wired to work
with a lot of code for other services which a do not like
to implement more generic beause i need here admin-code
witout comprmoises by maintain all sort of network-services


cat /scripts/dhcp/dhcpd.conf.template
authoritative;
ddns-update-style none;
ddns-updates off;
default-lease-time 86400;
max-lease-time 172800;
log-facility local7;
subnet x.x.x.0 netmask 255.255.255.0 {
 option domain-name "thelounge.net";
 option domain-name-servers x.x.x.6, x.x.x.106, x.x.x.15;
 option routers x.x.x.1;
 option smtp-server x.x.x.15;
 option pop-server x.x.x.15;
 option ntp-servers x.x.x.103, x.x.x.110;
 option time-servers x.x.x.103, x.x.x.110;
 option subnet-mask 255.255.255.0;
 option broadcast-address x.x.x.255;
 option interface-mtu 1472;
 range x.x.x.x x.x.x.x;
}
[static]
_______________________________________________________________________

cat /scripts/dhcp/dhcpd-entry.template
host [entry_name] {
 hardware ethernet [entry_mac];
 fixed-address [entry_value];
}
_______________________________________________________________________

cat /scripts/dhcp/generate.php
#!/usr/bin/php
<?php
 require('global.inc.php');
 $db            = new mysql_class();
 $db->host      = '****';
 $db->user      = 'dns';
 $db->pwd       = '****************';
 $db->db        = ''****************';';
 $db->connect();
 $conf_file_live = '/etc/dhcp/dhcpd.conf';
 $template_file  = file_get_contents(dirname(__FILE__) . '/dhcpd.conf.template');
 $template_entry = file_get_contents(dirname(__FILE__) . '/dhcpd-entry.template');
 $static = '';
 $result = $db->query_fetch_all("select entry_name, entry_value, entry_mac from dns_intern_entrys where
entry_type='A' and entry_zone_cleartext='thelounge.net' and entry_mac!='' order by entry_name;");
 foreach($result as $row)
 {
  $static .= MY_LE . str_replace
  (
   array('[entry_name]', '[entry_value]', '[entry_mac]'),
   array($row['entry_name'], $row['entry_value'], strtoupper($row['entry_mac'])),
   $template_entry
  );
 }
 $conf = trim(str_replace('[static]', $static, $template_file)) . MY_LE;
 if(@file_get_contents($conf_file_live) != $conf)
 {
  file_put_contents($conf_file_live, $conf);
  chmod($conf_file_live, 0644);
  $out = '';
  $temp = popen('/sbin/service dhcpd condrestart', 'r');
  while($buffer = fread($temp, 1024))
  {
   $out .= $buffer;
  }
  pclose($temp);
  echo $out . MY_LE . MY_LE . MY_LE;
  echo $conf;
 }
?>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 261 bytes
Desc: OpenPGP digital signature
URL: <http://lists.fedoraproject.org/pipermail/users/attachments/20121130/0dece47a/attachment-0001.sig>


More information about the users mailing list