#!/sw/bin/perl $self = $0; $self =~ s!^.*/!!; $source = "/s/tftpboot/host"; unless (opendir(HOSTS, $source)) { die "$self: can't read directory '$source': $!\n"; } @hosts = sort readdir(HOSTS); closedir(HOSTS); foreach $file (@hosts) { next if ($file eq '.'); next if ($file eq '..'); $host=''; $alias=''; $domain=''; $hostaddr=''; $hostname=''; unless (open(HOST, "<$source/$file")) { warn "$self: can't read '$source/$file': $!\n"; next; } while () { chop; ($var, $value) = split(/\s*=\s*/); if (($var eq "ip-nr") && ($value =~ /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/)) { $host = sprintf("%.2X%.2X%.2X%.2X", $1, $2, $3, $4); $hostaddr = sprintf("%d.%d.%d.%d", $1, $2, $3, $4); } if ($var eq "hostname") { $hostname=$value; } if ($var eq "domain") { $domain=$value; } if ($var eq "alias") { $alias=$value; } } close(HOST); if (($host ne '') && ($hostname ne '')) { if (($domain ne '') && ($hostname !~ /\./)) { $hostname = "$hostname.$domain $hostname"; # $hostname .= " $hostname.$domain"; } if (defined $addr{$host}) { warn "$self: $addr{$host} ($name{$host}) redefined as '$hostname' in '$file'!\n"; if ($alias{$host} ne '') { $alias{$host} .= " $hostname"; } else { $alias{$host} = $hostname; } } else { $addr{$host} = $hostaddr; $name{$host} = $hostname; $alias{$host} = $alias; } } } undef @hosts; foreach $host (sort keys(%name)) { if ($alias{$host} ne '') { $name{$host} .= " $alias{$host}"; } printf("%-16s %s\n", $addr{$host}, $name{$host}); } __END__