my $browser = LWP::UserAgent->new();
my $source_data = $browser->get( $config{source_file} );
die( "Couldn't GET $config{source_file}\n" ) unless defined $source_data;
print "Got source data\n";
my $results_table;
my @all_results = split /\n/, $source_data->{_content};
for ( @all_results ) {
next if $_ =~ m/^\#/;
my ( $site_name, $line_speed, $mgmt_ip, $switch_port, $ro_community, $group,
$site_code )
= split /\|/;
####
$results_table->{$group}->{$site_name} = {
line_speed => $line_speed,
mgmt_ip => $mgmt_ip,
switch_port => $switch_port,
ro_community => $ro_community,
site_code => $site_code,
oss_device => $oss_device,
snmp_status => '',
sysobjid => '',
};
####
my ($session, $error) = Net::SNMP->session(
-community => $results_table->{$group}->{$site_name}->{ro_community},
-hostname => $results_table->{$group}->{$site_name}->{mgmt_ip},
-nonblocking => 0x1, # Create non-blocking objects
);
if (!defined($session)) {
printf("ERROR: %s.\n", $error);
exit 1;
}
####
$session->get_request(
-varbindlist => [ $oids{sysobjid} ],
-callback => [ \&store_sysobjid, \$group, \$site_name ]
);
####
}
snmp_dispatcher();
####
sub store_sysobjid
{
my ($session, $group, $site_name ) = @_;
if (!defined($session->var_bind_list)) {
$results_table->{$$group}}->{$$site_name} = {
sysobjid => "unknown",
snmp_status => "NOT OK",
};
printf("%-15s ERROR: %s\n", $session->hostname, $session->error);
} else {
$results_table->{$$group}->{$$site_name} = {
sysobjid => ${$session->var_bind_list}{$oids{sysobjid}},
snmp_status => "OK"};
}
}