sub custom_export_device_extended { my $filename = "$HOME_TMP/device-summary-ext.csv"; my $snmp_cfg_ref = config_load_snmp_cfg (); my %data; my $OUT; for my $line (adb_result ("mget text * sys *")) { my ($dev, $child, $attr, undef, $val) = split (" ", $line, 5); $attr =~ s/^SNMPv2-MIB\.//img; $data{$dev}{$attr} = $val; } for my $line (adb_result ("mget uptime * sys *")) { my ($dev, $child, $attr, undef, $val) = split (" ", $line, 5); my ($uptime, $utime) = split (",", $val); $attr =~ s/^SNMPv2-MIB\.//img; $data{$dev}{$attr} = $uptime; } for my $line (adb_result ("mtime device *")) { my ($dev, undef, $val) = split (" ", $line, 3); my ($ctime, $mtime, $utime) = split (",", $val); $data{$dev}{ctime} = $ctime; } for my $line (adb_result ("mgroup device *")) { my ($dev, undef, $val) = split (" ", $line, 3); if ($val eq "none") { $data{$dev}{groups} = ""; } else { $val =~ s/,/ /mg; $data{$dev}{groups} = $val; } } open ($OUT, ">", "$filename.tmp") or EXIT_FATAL ("Can't open $filename.tmp: $!"); for my $dev (nat_sort keys %data) { my $snmp_cmd = $snmp_cfg_ref->{lc ($dev)}{cmd} || ""; $snmp_cmd =~ s/ maxrep \d+$//m; # strip maxrep parameter my $uptime_sec = ""; if (defined $data{$dev}{sysUpTime}) { $uptime_sec = time () - $data{$dev}{sysUpTime}; } printf $OUT "%s,%s,%s,%s,%s,%s,%d,%s,\"%s\",%s,\"%s\",\"%s\",%s,%s\n", $dev, $data{$dev}{ip4addr} || "", $data{$dev}{ip6addr} || "", $data{$dev}{sysUpTime} || "", $uptime_sec, time_elapsed ($data{$dev}{sysUpTime} || ""), $data{$dev}{ctime}, date_fmt ($data{$dev}{ctime}, "yyyymmddhhmmss"), $data{$dev}{sysLocation} || "", $data{$dev}{sysObjectID} || "", $data{$dev}{sysDescr} || "", $data{$dev}{sysContact} || "", $snmp_cmd, $data{$dev}{groups} || ""; } close $OUT; rename ("$filename.tmp", $filename); }