6 use Data::Dump qw(dump);
8 my $community = 'public';
18 @printers = @ARGV if @ARGV;
21 info iso.3.6.1.2.1.1.1.0
22 hostname iso.3.6.1.2.1.43.5.1.1.16.1
23 serial iso.3.6.1.2.1.43.5.1.1.17.1
24 pages iso.3.6.1.2.1.43.10.2.1.4.1
25 @message iso.3.6.1.2.1.43.18.1.1.8
26 @consumable_name iso.3.6.1.2.1.43.11.1.1.6.1.1
27 @consumable_max iso.3.6.1.2.1.43.11.1.1.8.1
28 @consumable_curr iso.3.6.1.2.1.43.11.1.1.9.1
29 @tray_dim_x iso.3.6.1.2.1.43.8.2.1.4.1
30 @tray_dim_y iso.3.6.1.2.1.43.8.2.1.5.1
31 @tray_max iso.3.6.1.2.1.43.8.2.1.9.1
32 @tray_capacity iso.3.6.1.2.1.43.8.2.1.10.1
33 @tray_name iso.3.6.1.2.1.43.8.2.1.13.1
39 my ( $session, $oid, $name ) = @_;
41 if ( ! defined $session->var_bind_list ) {
42 warn "ERROR: ",$session->hostname, " $oid $name ", $session->error, "\n";
48 warn "# $oid $name var_bind_list ", dump( $session->var_bind_list );
49 my $results = $session->var_bind_list;
50 foreach my $r_oid ( sort {
51 my ($af,$bf) = ($a,$b);
52 $af =~ s{\.(\d+)$}{sprintf("%03d",$1)}eg;
53 $bf =~ s{\.(\d+)$}{sprintf("%03d",$1)}eg;
56 my $var = $results->{$r_oid};
57 if ( $name =~ m{^\@} ) {
58 my $no_prefix = $name;
59 $no_prefix =~ s{^\@}{};
60 push @{ $response->{ $session->hostname }->{ $no_prefix } }, $var;
62 $response->{ $session->hostname }->{ $name } = $var;
67 foreach my $host ( @printers ) {
69 my ( $snmp, $err ) = Net::SNMP->session(
72 -community => $community,
79 warn "ERROR: $host $err\n";
83 while ( my ($name,$oid) = each %vars ) {
84 warn "# $name $oid\n";
86 if ( $name =~ m/^\@/ ) {
87 $snmp->get_entries( -columns => [ $oid ], -callback => [ \&columns_cb, $oid, $name ] );
89 $snmp->get_request( -varbindlist => [ $oid ], -callback => [ \&columns_cb, $oid, $name ] );
95 warn "# dispatch requests for ",dump(@printers);
98 print dump($response);