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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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;
 }
?>

Attachment: signature.asc
Description: OpenPGP digital signature

-- 
users mailing list
users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe or change subscription options:
https://admin.fedoraproject.org/mailman/listinfo/users
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines
Have a question? Ask away: http://ask.fedoraproject.org
[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [EPEL Devel]     [Fedora Magazine]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Desktop]     [Fedora Fonts]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Fedora Sparc]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux