diff options
author | Michael Brown <mcb30@etherboot.org> | 2005-05-17 16:44:57 +0000 |
---|---|---|
committer | Michael Brown <mcb30@etherboot.org> | 2005-05-17 16:44:57 +0000 |
commit | 1097cf8685cd81f0003bd6f17d050e5174a85b90 (patch) | |
tree | 47a39f2a1e980cca43c28c4d1a6dfdf431b910b2 /contrib/bootptodhcp | |
parent | 75a5374d79ee0defc46c306731142faccc6eda60 (diff) | |
download | ipxe-1097cf8685cd81f0003bd6f17d050e5174a85b90.tar.gz |
Initial revision
Diffstat (limited to 'contrib/bootptodhcp')
-rwxr-xr-x | contrib/bootptodhcp/bootptodhcp.pl | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/contrib/bootptodhcp/bootptodhcp.pl b/contrib/bootptodhcp/bootptodhcp.pl new file mode 100755 index 00000000..c8d6465a --- /dev/null +++ b/contrib/bootptodhcp/bootptodhcp.pl @@ -0,0 +1,42 @@ +#!/usr/bin/perl -w +# +# Quick hack to convert /etc/bootptab to format required by ISC DHCPD +# This only outputs the fixed hosts portion of the config file +# You still have to provide the global options and the subnet scoping +# +# Turn $useipaddr on if you prefer to use IP addresses in the config file +# I run DNS so I prefer domain names +$useipaddr = 0; +# This will be appended to get the FQDN unless the hostname is already FQDN +$domainname = "ken.com.au"; +$tftpdir = "/tftpdir/"; +open(B, "/etc/bootptab") or die "/etc/bootptab: $!\n"; +while(<B>) { + if (/^[^a-z]/) { + $prevline = $_; + next; + } + chomp($_); + ($hostname, @tags) = split(/:/, $_, 5); + ($fqdn = $hostname) .= ".$domainname" unless($hostname =~ /\./); + ($macaddr) = grep(/^ha=/, @tags); + $macaddr =~ s/ha=//; + $macaddr =~ s/(..)(..)(..)(..)(..)(..)/$1:$2:$3:$4:$5:$6/g; + ($ipaddr) = grep(/^ip=/, @tags); + $ipaddr =~ s/ip=//; + ($bootfile) = grep(/^bf=/, @tags); + $bootfile =~ s/bf=//; + $bootfile = $tftpdir . $bootfile; +# I have a comment line above most entries and I like to carry this over + print $prevline if ($prevline =~ /^#/); + $address = $useipaddr ? $ipaddr : $fqdn; + print <<EOF + host $hostname { + hardware ethernet $macaddr; + fixed-address $address; + filename "$bootfile"; + } +EOF +; + $prevline = $_; +} |