generate JSON output
[snmp-json.git] / printer.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 use Net::SNMP;
6 use Data::Dump qw(dump);
7
8 my $community = 'public';
9 my @printers = qw(
10 10.60.3.15
11 10.60.3.17
12
13 10.60.3.19
14 10.60.3.21
15
16 10.60.3.23
17 10.60.3.25
18
19 10.60.3.27
20 10.60.3.29
21
22 10.60.3.31
23 10.60.3.33
24
25 10.60.3.35
26 10.60.3.37
27 );
28
29 my %vars = qw[
30 model           .1.3.6.1.2.1.25.3.2.1.3.1
31 serial          .1.3.6.1.2.1.43.5.1.1.17
32 pages           .1.3.6.1.2.1.43.10.2.1.4.1.1
33 @message        .1.3.6.1.2.1.43.18.1.1.8
34 @message        .1.3.6.1.2.1.43.16
35 ];
36
37 foreach my $host ( @printers ) {
38
39         my ( $snmp, $err ) = Net::SNMP->session(
40                 -hostname => $host,
41                 -version => 1,
42                 -community => $community,
43                 -timeout => 1,
44                 -retries => 0,
45         );
46
47         if ( ! $snmp ) {
48                 warn "ERROR: $host $err\n";
49                 next;
50         }
51
52         while ( my ($name,$oid) = each %vars ) {
53                 warn "# $name $oid\n";
54                 if ( $name =~ m/^\@/ ) {
55                         my $result = $snmp->get_entries( -columns => [ $oid ] );
56                         printf "%s\t%s\t%s\t%s\n", $host, $name, $oid, dump($result) if $result;
57                 } else {
58                         my $result = $snmp->get_request( -varbindlist => [ $oid ] );
59                         printf "%s\t%s\t%s\t%s\n", $host, $name, $oid, $result->{$oid} if exists $result->{$oid};
60                 }
61         }
62
63 }
64