📄 bootptodhcp.pl
字号:
#!/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 = $_;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -