The following patch get rid fo the hardcoded eth0/eth1 entries in sitesummary.
I am unsure what ordering should be used to avoid using interfaces like virbr0 when deciding how to identify a machine. diff --git a/SiteSummary.pm b/SiteSummary.pm index e9f2a93..ad90031 100644 --- a/SiteSummary.pm +++ b/SiteSummary.pm @@ -207,19 +207,15 @@ sub get_primary_macaddress { # sub get_unique_ether_id { my $ifconfigoutput = shift; - my $eth0mac; - my $eth1mac; - my $eth2mac; + my %macs; open(IFCONFIG, $ifconfigoutput) || return undef; while (<IFCONFIG>) { chomp; - $eth0mac = $1 if (m/^eth0\s+Link encap:Ethernet HWaddr (\S+)/); - $eth1mac = $1 if (m/^eth1\s+Link encap:Ethernet HWaddr (\S+)/); - $eth2mac = $1 if (m/^eth2\s+Link encap:Ethernet HWaddr (\S+)/); + $macs{$1} = $2 if (m/^(\w+)\s+Link encap:Ethernet HWaddr (\S+)/); } close (IFCONFIG); - #print STDERR "MAC: $eth0mac\n"; - my $mac = $eth0mac || $eth1mac || $eth2mac || "unknown"; + my $if = (sort keys %macs)[0]; + my $mac = $macs{$if}; return lc("ether-$mac"); } diff --git a/sitesummary-nodes b/sitesummary-nodes index a889fe7..cb9108e 100755 --- a/sitesummary-nodes +++ b/sitesummary-nodes @@ -145,7 +145,15 @@ sub is_remote_nagios_client { sub get_switch_info { my $hostid = shift; my %switch = (); - for my $if (qw(eth0 eth1)) { + my $ifconfigoutput = get_filepath_current($hostid, "/system/ifconfig-a"); + my %ifs; + open(IFCONFIG, $ifconfigoutput) || return (); + while (<IFCONFIG>) { + chomp; + $ifs{$1} = $2 if (m/^(\w+)\s+Link encap:Ethernet HWaddr (\S+)/); + } + close (IFCONFIG); + for my $if (sort keys %ifs) { my $path = get_filepath_current($hostid, "/system/cdpr.$if"); my ($id, $addr); if (open(my $fh, $path)) {