• Publicidad

Traps

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Notapor explorer » 2007-10-11 20:17 @887

El error dice que la función Warn no está definida, así que puede ser porque no se haya definido en ese programa, no haya sido definida en alguna de las librerías incluidas o quizás sea porque en realidad se escriba warn, que sí forma parte del Perl.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Notapor Kiloko » 2007-10-12 10:59 @499

:?: A ver, a ver, ya me confundí. Tengo que definir warn en mi programa, pero ¿cómo?

Anexo código que me marca error dentro snmpUtils.pm

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
# this funky wrapper is because SNMP_Session throws exceptions with
# warn(), which we need to catch, instead of letting them run
# roughshod over Cricket's output.

sub _do {
    my($subref, @args) = @_;
    my(@res);

    return (-1) if (defined $skipcnt{$args[0]} &&
                    $skipcnt{$args[0]} >= $MAXTRIES);

    $err = '';
    eval {
        local($SIG{'__WARN__'}) = sub { $err = $_[0]; die($err); };
        @res = &{$subref}(@args);
    }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor Kiloko » 2007-10-12 11:14 @509

Ah y otra cosa, y es que el programa funciona si acorto el OID, por ejemplo:
si antes tenía 1.3.6.1.4.1.1.4.2.1.2.1.2
y lo cambio por 1.3.6.1.4.1,
funciona el programa. :?:
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-10-12 11:19 @513

Sí, pero ¿qué error?

Ayer dijimos que warn no habría por qué definirla porque sí forma parte del lenguaje Perl. La que no está es Warn (primera letra en mayúscula).

Lo que hace el código ese es crear en una nueva función que capture las salidas warn para mostrarlas como simples mensajes die, en caso de producirse al ejecutarse la función pasada en $subref. Pero a su vez, esto se hace dentro de un contexto controlado por eval, con lo que die no termina de forma fulminante el programa.

El texto del comentario dice -algo- así: "Esta curiosa envoltura es debida a que SNMP_Session levanta excepciones con warn(), que necesitamos capturar, en vez de permitir que pisoteen la salida del Cricket".
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2007-10-12 11:42 @529

¡Ah!, otra cosa...

Estos días están apareciendo muchas nuevas versiones de módulos SNMP en CPAN:

SNMP::Effective
NetSNMP::MibProxy
NetSNMP::LogParser
POE::Component::SNMP::Session
YATG.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Kiloko » 2007-10-12 12:09 @548

Ya encontré el error, y es que era un error humano no por parte del programa: el problema reside en que necesito estar cambiando los OID del programa, y yo anteponía # para hacer los comentarios y daba por hecho que con eso bastaba, pero:

así los declaro:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $sysName   = "1.3.6.1.4.1.9.9.246.1.4.1.1.2";       
my $sysUpTime = "1.3.6.1.4.1.9.9.246.1.4.1.1.3";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y a esta parte solo anteponía # y pensaba erróneamente que todo lo demás se suprimía, pero no era así ya que el programa continuaba con esta otra parte

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
@resultado1=snmpUtils::walk($snmp1, @mibs1);
@resultado2=snmpUtils::walk($snmp2, @mibs2);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Por lo tanto si quiero suprimir, el OID, tengo que hacerlo en esas 2 partes porque si solo lo hago en la primera me manda el error.. :P

También te comento para buscar una MIB que monitoree los túneles que se realizan por un CISCO, (2611XM) ¿alguna idea?
Saludos.
Nunca interrumpas a tu enemigo cuando está cometiendo un error
Napoleón Bonaparte
Avatar de Usuario
Kiloko
Perlero nuevo
Perlero nuevo
 
Mensajes: 243
Registrado: 2007-07-10 18:26 @810
Ubicación: MOnterrey NL

Notapor explorer » 2007-10-12 13:13 @592

JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados