mirror of
https://github.com/xcat2/xNBA.git
synced 2024-12-15 15:51:44 +00:00
43 lines
1.2 KiB
Perl
43 lines
1.2 KiB
Perl
|
#!/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 = $_;
|
||
|
}
|