85 lines
1.3 KiB
Perl
Executable File
85 lines
1.3 KiB
Perl
Executable File
#!/usr/bin/perl -tw
|
|
|
|
use strict;
|
|
use warnings;
|
|
use lib './libs';
|
|
use Getopt::Long qw(:config no_ignore_case);
|
|
use Data::Dumper;
|
|
use Net::SNMP;
|
|
|
|
my $verbose = '';
|
|
my $type = '';
|
|
my $mode = '';
|
|
my $host = '';
|
|
my $community = '';
|
|
|
|
|
|
GetOptions (
|
|
'c=s' => \$community,
|
|
'h' => \&help,
|
|
'H=s' => \$host,
|
|
'm=s' => \$mode,
|
|
't=s' => \$type,
|
|
'community=s' => \$community,
|
|
'help' => \&help,
|
|
'host=s' => \$host,
|
|
'mode=s' => \$mode,
|
|
'type=s' => \$type,
|
|
);
|
|
|
|
my $typeMap = {
|
|
'snmpd' => 'TYPE::SNMPD',
|
|
'cisco' => 'TYPE::CISCO',
|
|
'huawei' => 'TYPE::HUAWEI'
|
|
};
|
|
|
|
my $modeMap = {
|
|
'cpu' => \&get_cpu,
|
|
'temp' => \&get_temp,
|
|
'net' => \&get_net
|
|
};
|
|
|
|
my $t = $typeMap->{$type};
|
|
eval "use $t";
|
|
my $object = eval { $t->new() };
|
|
|
|
|
|
my $result = eval { $modeMap->{$mode}->() };
|
|
|
|
sub get_cpu {
|
|
|
|
}
|
|
|
|
sub get_temp {
|
|
|
|
}
|
|
|
|
|
|
sub get_net {
|
|
print "Get Net Data...\n";
|
|
my %params;
|
|
my ($snmp,$error) = Net::SNMP->session(
|
|
-hostname => $host,
|
|
-community => $community,
|
|
-nonblocking => 0
|
|
);
|
|
my $result = $snmp->get_table(-baseoid => $object->{NET}->{IfTable});
|
|
print Dumper($result);
|
|
|
|
return (%params);
|
|
}
|
|
|
|
sub help {
|
|
print qq{
|
|
Usage: $0 [...]
|
|
|
|
-h --help print help page
|
|
-v --verbose do some verbose stuff
|
|
|
|
};
|
|
|
|
return(0);
|
|
}
|
|
|
|
exit(0);
|