summaryrefslogtreecommitdiff
path: root/scripts/vyatta-show-snmp.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/vyatta-show-snmp.pl')
-rwxr-xr-xscripts/vyatta-show-snmp.pl123
1 files changed, 0 insertions, 123 deletions
diff --git a/scripts/vyatta-show-snmp.pl b/scripts/vyatta-show-snmp.pl
deleted file mode 100755
index 634b3cc..0000000
--- a/scripts/vyatta-show-snmp.pl
+++ /dev/null
@@ -1,123 +0,0 @@
-#! /usr/bin/perl
-
-# **** License ****
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
-# All Rights Reserved.
-#
-# Author: Stephen Hemminger
-# Date: January 2010
-# Description: Script to display SNMP information
-#
-# **** End License ****
-#
-use strict;
-use warnings;
-use Getopt::Long;
-use NetAddr::IP;
-
-my $SNMPDCFG = '/etc/snmp/snmpd.conf';
-my $SNMPSTATUS = '/usr/bin/snmpstatus';
-my $password_file = '/config/snmp/superuser_pass';
-
-# generate list of communities in configuration file
-sub read_config {
- my %community;
-
- die "Service SNMP does not configured.\n" if (! -e $SNMPDCFG);
-
- open( my $cfg, '<', $SNMPDCFG )
- or die "Can't open $SNMPDCFG : $!\n";
-
- while (<$cfg>) {
- chomp;
- s/#.*$//;
- my @cols = split;
- next
- unless ( $#cols > 0
- && ( $cols[0] eq 'rocommunity' || $cols[0] eq 'rwcommunity' ) );
-
- my $addr = ( $#cols > 1 ) ? $cols[2] : "0.0.0.0/0";
- $community{ $cols[1] } = NetAddr::IP->new($addr);
- }
- close $cfg;
-
- return \%community;
-}
-
-# expand list of available communities for allowed: tag
-sub show_all {
- my $community = read_config();
-
- print join( ' ', keys( %{$community} ) ), "\n";
- exit 0;
-}
-
-# check status of any accessible community on localhost
-sub status_any {
- my $cref = read_config();
- my %community = %{$cref};
- my $localhost = new NetAddr::IP('localhost');
-
- if (scalar(%community)) {
- foreach my $c ( keys %community ) {
- my $addr = $community{$c};
- status( $c, $localhost->addr() ) if ( $addr->contains($localhost) );
- }
- }
- status_v3();
-
-}
-
-sub status_v3 {
- open (my $file, '<' , $password_file) or die "Couldn't open $password_file - $!";
- my $superuser_pass = do { local $/; <$file> };
- close $file;
- open ($file, '<', $SNMPDCFG) or die "Couldn't open $SNMPDCFG - $!";
- my $superuser_login = '';
- while (my $line = <$file>) {
- if ($line =~ /^iquerySecName (.*)$/) {
- $superuser_login = $1;
- }
- }
- close $file;
- exec $SNMPSTATUS, '-v3', '-l', 'authNoPriv', '-u', $superuser_login, '-A', $superuser_pass, 'localhost';
-}
-
-# check status of one community
-sub status {
- my ( $community, $host ) = @_;
- $host = 'localhost' unless defined($host);
-
- print "Status of SNMP community $community on $host\n";
- exec $SNMPSTATUS, '-v1', '-c', $community, $host;
- die "Can't exec $SNMPSTATUS : $!";
-}
-
-sub usage {
- print "usage: $0 [--community=name [--host=hostname]]\n";
- print " $0 --allowed\n";
- exit 1;
-}
-
-my ( $host, $community, $allowed );
-
-GetOptions(
- "host=s" => \$host,
- "community=s" => \$community,
- "allowed" => \$allowed,
-) or usage();
-
-show_all() if ($allowed);
-status( $community, $host ) if ( defined($community) );
-status_any();
-