maestro programador explorer, jejeje,
Qué buen articulo, lo voy a imprimir y pegar en las paredes de mi cubículo.
Ahora sé que
"No vivo para programar, programo para no vivir."
Hoy les quiero enviar un código para el uso de SNMP, que me ha ayudado en mucho, cuando necesito saber si un equipo esta dando o no respuesta me hace un barrido y en mi caso para saber si el equipo está o no respondiendo y cuánto tiempo lleva desde que fue encendido.
Using perl Syntax Highlighting
#! /usr/local/bin/perl
use strict
;
use Net
::SNMP qw(:snmp
);
my ($session, $error) = Net
::SNMP->session(
-version
=> 'snmpv2c',
-nonblocking
=> 1
,
-hostname
=> shift || '182.25.24.2.58', # a donde va.
-community
=> shift || 'laqueelclientequiera', #comunidad
-port
=> shift || 161 #puerto
);
if (!defined($session)) {
printf("ERROR: %s.\n", $error);
exit 1;
}
my $ifTable = '1.3.6.1.2.1.2.2'; # la tabla que utiliza..
my $result = $session->get_bulk_request(
-callback
=> [\&table_cb, {}],
-maxrepetitions
=> 10
,
-varbindlist
=> [$ifTable]
);
if (!defined($result)) {
printf("ERROR: %s.\n", $session->error);
$session->close;
exit 1;
}
snmp_dispatcher
();
$session->close;
exit 0;
sub table_cb
{
my ($session, $table) = @_;
if (!defined($session->var_bind_list)) {
printf("ERROR: %s\n", $session->error);
} else {
# Loop through each of the OIDs in the response and assign
# the key/value pairs to the anonymous hash that is passed
# to the callback. Make sure that we are still in the table
# before assigning the key/values.
my $next;
foreach my $oid (oid_lex_sort
(keys(%{$session->var_bind_list}))) {
if (!oid_base_match
($ifTable, $oid)) {
$next = undef;
last;
}
$next = $oid;
$table->{$oid} = $session->var_bind_list->{$oid};
}
# If $next is defined we need to send another request
# to get more of the table.
if (defined($next)) {
$result = $session->get_bulk_request(
-callback
=> [\&table_cb, $table],
-maxrepetitions
=> 10
,
-varbindlist
=> [$next]
);
if (!defined($result)) {
printf("ERROR: %s\n", $session->error);
}
} else {
# We are no longer in the table, so print the results.
foreach my $oid (oid_lex_sort
(keys(%{$table}))) {
printf("%s => %s\n", $oid, $table->{$oid});
}
}
}
}Coloreado en 0.005 segundos, usando
GeSHi 1.0.8.4
Ah, por cierto, lo bajé de una página, .x.x.x.x, y realicé en él mis modificaciones...
Saludos.