adding export to read mailbox status information, RT#15987
[freeside.git] / torrus / bin / snmpfailures.in
1 #!@PERL@ -w
2 #  Copyright (C) 2010  Stanislav Sinyagin
3 #
4 #  This program is free software; you can redistribute it and/or modify
5 #  it under the terms of the GNU General Public License as published by
6 #  the Free Software Foundation; either version 2 of the License, or
7 #  (at your option) any later version.
8 #
9 #  This program is distributed in the hope that it will be useful,
10 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
11 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 #  GNU General Public License for more details.
13 #
14 #  You should have received a copy of the GNU General Public License
15 #  along with this program; if not, write to the Free Software
16 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
17
18 # $Id: snmpfailures.in,v 1.1 2010-12-27 00:04:03 ivan Exp $
19 # Stanislav Sinyagin <ssinyagin@yahoo.com>
20
21 BEGIN { require '@torrus_config_pl@'; }
22
23 use strict;
24 use Getopt::Long;
25 use JSON;
26     
27 use Torrus::SiteConfig;
28 use Torrus::DB;
29 use Torrus::Log;
30 use Torrus::SNMP_Failures;
31
32 exit(1) if not Torrus::SiteConfig::verify();
33
34
35 my $tree;
36 my $print_details;
37
38 my $help_needed;
39
40
41 my $ok = GetOptions('tree=s'      => \$tree,
42                     'details'     => \$print_details,
43                     'help'        => \$help_needed);
44
45 if( not $ok or not $tree or
46     $help_needed or scalar(@ARGV) > 0 )
47 {
48     print STDERR "Usage: $0 --tree=NAME [options...]\n",
49     "Options:\n",
50     "  --tree=NAME      tree name\n",
51     "  --details        print failure details\n",
52     "  --help           this help message\n";
53     exit 1;
54 }
55
56
57 if( not Torrus::SiteConfig::treeExists( $tree ) )
58 {
59     Error('Tree ' . $tree . ' does not exist');
60     exit 1;
61 }
62
63
64 my $out = {};
65
66 &Torrus::DB::setSafeSignalHandlers();
67
68 my $nInstances = Torrus::SiteConfig::collectorInstances( $tree );
69 for( my $instance = 0; $instance < $nInstances; $instance++ )
70 {
71     my $db_failures = new Torrus::SNMP_Failures( -Tree => $tree,
72                                                  -Instance => $instance );
73     
74     if( not defined( $db_failures ) )
75     {
76         exit(1);
77     }
78     
79     
80     $db_failures->read( $out, -details => $print_details );
81     undef $db_failures;
82 }
83
84
85 my $json = new JSON;
86 $json->canonical();
87 $json->pretty();
88 print $json->encode($out);
89
90
91 exit(0);
92
93
94 # Local Variables:
95 # mode: perl
96 # indent-tabs-mode: nil
97 # perl-indent-level: 4
98 # End: