serial iso.3.6.1.2.1.43.5.1.1.17.1
pages iso.3.6.1.2.1.43.10.2.1.4.1
@message iso.3.6.1.2.1.43.18.1.1.8
-@consumable_name iso.3.6.1.2.1.43.11.1.1.6.1.1
-@consumable_max iso.3.6.1.2.1.43.11.1.1.8.1
-@consumable_curr iso.3.6.1.2.1.43.11.1.1.9.1
-@tray_dim_x iso.3.6.1.2.1.43.8.2.1.4.1
-@tray_dim_y iso.3.6.1.2.1.43.8.2.1.5.1
-@tray_max iso.3.6.1.2.1.43.8.2.1.9.1
-@tray_capacity iso.3.6.1.2.1.43.8.2.1.10.1
-@tray_name iso.3.6.1.2.1.43.8.2.1.13.1
+@consumable.name iso.3.6.1.2.1.43.11.1.1.6.1
+@consumable.max iso.3.6.1.2.1.43.11.1.1.8.1
+@consumable.curr iso.3.6.1.2.1.43.11.1.1.9.1
+@tray.dim_x iso.3.6.1.2.1.43.8.2.1.4.1
+@tray.dim_y iso.3.6.1.2.1.43.8.2.1.5.1
+@tray.max iso.3.6.1.2.1.43.8.2.1.9.1
+@tray.capacity iso.3.6.1.2.1.43.8.2.1.10.1
+@tray.name iso.3.6.1.2.1.43.8.2.1.13.1
];
our $response;
warn "# $oid $name var_bind_list ", dump( $session->var_bind_list );
my $results = $session->var_bind_list;
- while ( my ($r_oid,$val) = each %$results ) {
+ # oid_lex_sort would be wonderfull to use here, but it doesn't work
+ foreach my $r_oid ( sort {
+ my ($af,$bf) = ($a,$b);
+ $af =~ s{\.(\d+)$}{sprintf("%03d",$1)}eg;
+ $bf =~ s{\.(\d+)$}{sprintf("%03d",$1)}eg;
+ $af cmp $bf
+ } keys %$results ) {
+ my $var = $results->{$r_oid};
if ( $name =~ m{^\@} ) {
- my $offset = $1 - 1 if $r_oid =~ m{^\Q$oid\E\.?(\d+)};
- $response->{ $session->hostname }->{ $name }->[ $offset ] = $results->{$r_oid};
+ my $no_prefix = $name;
+ $no_prefix =~ s{^\@}{};
+ push @{ $response->{ $session->hostname }->{ $no_prefix } }, $var;
} else {
- $response->{ $session->hostname }->{ $name } = $results->{$r_oid};
+ $response->{ $session->hostname }->{ $name } = $var;
}
}
}
warn "# dispatch requests for ",dump(@printers);
snmp_dispatcher;
-print dump($response);
+foreach my $ip ( keys %$response ) {
+
+ my $status = $response->{$ip};
+ foreach my $group ( grep { /\w+\.\w+/ } keys %$status ) {
+ my ( $prefix,$name ) = split(/\./,$group,2);
+ foreach my $i ( 0 .. $#{ $status->{$group} } ) {
+ $status->{$prefix}->[$i]->{$name} = $status->{$group}->[$i];
+ }
+ delete $status->{$group};
+ }
+
+ print "$ip ",dump($status);
+}