• Publicidad

Net::Telnet

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Notapor explorer » 2008-09-25 05:19 @263

galinderooo escribiste:Ahora estoy lanzando comandos sobre el router, pero uno de esos comandos es un ping, entonces lo que hago es, cuando encuentre '!' que pare el ping y lance otros comandos, pero claro, yo cuando lo paro de forma manual uso: control+shift+6, pero eso ¿cómo lo pongo yo en Perl? XD

Es que no está claro el escenario... ¿estamos hablando de mandar la secuencia control+shift+6 al router? ¿O se trata de un programa de gestión del router?
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 galinderooo » 2008-09-25 16:46 @740

Ahí me has pillado ^^ pues no lo sé muy bien si es del programa o del router; cuando lanzas un ping pone: Type escape to abort o algo así, pero... no sé a qué se refiere, miraré a ver y lo pongo. Si alguien sabe cómo cancelar un ping de un router Cisco que lo ponga, por favor.

Gracias de antemano y bueno, gracias a ti, explorer ^^
galinderooo
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2008-09-12 04:22 @224

Notapor explorer » 2008-09-25 17:23 @766

En CPAN hay unos cuantos módulos relativos a máquinas Cisco. Y por estos foros se ha hablado también de cómo enviarlo comandos.

Usa la búsqueda.
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 galinderooo » 2008-09-29 08:38 @402

No encuentro cómo "cancelar" el comando xD, mi intención es... hacer un ping de 100 repeticiones y que cuando responda, o sea:
Código: Seleccionar todo
......................!!!!!!!


Cuando sale '!' es que ya responde; pues cuando responda, que cancele el comando y siga con el script.

No lo encuentro en el CPAN XD
galinderooo
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2008-09-12 04:22 @224

Notapor explorer » 2008-09-29 11:20 @513

Dime marca y modelo del aparato.

Quizás debas programar la función waitfor() para capturar los '!'. O programar los ping para que solo se ejecutan un número determinado de veces.
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 galinderooo » 2008-09-30 10:13 @467

CISCO 2600 o 2800 Series. A ver, yo tengo puesto así a groso modo (que no estoy en el curro y no te lo puedo pegar):
Código: Seleccionar todo
lanzo ping x.x.x.x repeat 100
if waitforstring = ! - RDSI OK
else - RDSI KO


El caso es que tiene que hacer un ping para lanzar tráfico y que levante la RDSI, por eso el ping al principio no va a contestar y cuando lleve unos cuantos levantara la RDSI, entonces, cuando vea un '!', o sea, que ya ha levantado, que corte el ping y siga con el script.

Y aprovecho para preguntar una cosa que nos vuelve locos...

He estado mirando porque nada más entrar al router te salen un montón de cosas y por último: Username: O Password: (ojo que he puesto una O XD) entonces, no sabemos como detectar si es uno o otro, he probado con un script del cpan que hace algo parecido, pero a mi no me funciona, usa $session->lastline, que en teoria coge la última línea, pero a mi me coge la penúltima... XDD esta noche lo pego y veréis XD
galinderooo
Perlero nuevo
Perlero nuevo
 
Mensajes: 12
Registrado: 2008-09-12 04:22 @224

Notapor explorer » 2008-09-30 11:02 @502

Si es un Cisco, en CPAN hay un montón de módulos sobre el tema. Por ejemplo, en el módulo Net::Telnet::Cisco hay un ejemplo de cómo enviar un comando ping (Lástima que no se vea la parte de recogida).

Es un idea: ejecutas el ping una serie de veces. Obtienes la línea que el comando ha generado.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @salida = $session->cmd(
  "ping
  $protocol
  $ip
  $repeat
  $datagram
  $timeout
  $extended
  $sweep
  "
);
$linea = join '', @salida;
if ($linea =~ /!/) {
    print "SI\n";
}
else {
    print "NO\n";
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

entonces es que sí está levantado la RDSI. Si no, mandar el comando.

Lo malo es que no devuelve el control hasta que termina de ejecutar todo el comando.

En cuanto al prompt, lo puedes capturar con una expresión regular... o más sencillo, usar el método login() de Net::Telnet::Cisco.

Si son dispositivos IOS, no dejes de visitar Net::Telnet::Cisco::IOS.
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 Básico

¿Quién está conectado?

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