• Publicidad

Net::Telnet::Cisco, solo password

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

Net::Telnet::Cisco, solo password

Notapor knightman » 2009-09-16 11:26 @518

Hola, amigos foreros.

Resulta que realicé este script, el cual me funciona de maravilla, pero necesito acceder a otro equipo que solo pide password (no tiene nombre de usuario). Vverifiqué la LIB, la sintaxis, pero no comprendo la parte que dice la librería:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!
  2. $cmd = $cgi->param("cmd" );
  3. $cm  = $cgi->param("cmts");
  4. $mac = $cgi->param("mac" );
  5.  
  6. $ip[0]  = '10.52.1.1';
  7. $com[0] = 'scm';
  8.  
  9. my $session = Net::Telnet::Cisco->new(Host => $ip[$cm-1]); # 192.168.88.3
  10.  
  11. print "Content-type: text/html; charset=iso-8859-1\n\n";   # Para crear salida a HTML
  12.  
  13. $session->login('leo', 'leo');
  14. $session->cmd("terminal length 0");
  15.  
  16. print "<title>::::::::::::::::Buga extracción Archivo:::::::::::</title>";
  17. print "<form onsubmit='if (this.cmd.value == 12  ||  this.cmd.value == 13) this.mac.value = prompt(\"Ingrese la MAC en 3 partes separadas por puntos, así: 0016.cf22.5432\", this.mac.value)'>
  18. <input type='hidden' name='mac' value='$mac'>
  19. CMTS <select name='cmts'>
  20.    <option value='0' " . ($cm  eq 0  ?  "selected" : "") . ">buga
  21. </select>
  22. Comando <select name='cmd'>
  23.    <option value='0' " . ($cmd eq 0  ?  "selected" : "") . ">scm
  24. </select>
  25. <input type='submit' value='ok'>
  26. </form>";
  27.  
  28. print "<pre style='margin:0px; padding:6px; border:1px inset; width:98%; height:440px; overflow:auto;'>";
  29. if ($session->enable("cabe") ) {
  30.     @output = $session->cmd(String   => $com[$cmd], Timeout => 120);
  31.     $FILE = "BU.txt";
  32.     open(archivconf,">>".$FILE);
  33.     foreach (@output) {                        
  34.         ## $cadena=$_."\n";
  35.         $cadena = $_;
  36.         print archivconf ($cadena);
  37.     }
  38.     close(archivconf);
  39.     print "@output";
  40. }
  41. else {
  42.     warn "Can't enable: " . $session->errmsg;
  43. }
  44. print "</pre>";
  45. $session->close;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Aplico esto: $session->login([Passcode => 'clave',]); y no me funciona. ¿Qué puedo hacer?

Muchas gracias
Última edición por explorer el 2009-09-29 17:17 @761, editado 2 veces en total
Razón: Ortografía, anglicismos, sintaxis, indentación del código
knightman
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2009-06-04 11:34 @523

Publicidad

Re: NET::TELNET::CISCO solo password

Notapor explorer » 2009-09-16 11:54 @538

Bienvenido a los foros de Perl en Español, knightman.

Primero, decirte que he tenido que leer tu mensaje un par de veces para entender lo que has querido decir. Luego, abrirlo para reeditarlo, tanto el texto como el código, que lo he modificado un poco para que sea un poco más fácil de leer. :)

En cuanto a la cuestión, quizás sea tan sencillo como cambiar
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $session->login('leo', 'leo');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


por
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $session->login('', 'clave');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


No sé... habría que hacer pruebas.
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

Re: NET::TELNET::CISCO solo password

Notapor knightman » 2009-09-16 14:22 @640

Gracias, explorer, pero de este modo lo había intentado y no me funcionó, debido a que el acceso a este equipo (router) se le hace telnet y lo primero que pide en el prompt es el password, luego el enable y la clave.

Al leer la librería de Telnet::Cisco, veo este parámetro:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$ok = $obj->login([Name     => $username,]
                      [Password => $password,]
                      [Passcode => $passcode,] # for Secur-ID/XTACACS
                      [Prompt   => $match,]
                      [Timeout  => $secs,]);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

el passcode, para un tipo de seguridad especial de routers, le empleo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$ok = $obj->login([Password => $password,]);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y no me funciona. ¿Qué podrá ser? ¡¡¡ Muchas gracias !!!
knightman
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2009-06-04 11:34 @523

Re: NET::TELNET::CISCO solo password

Notapor explorer » 2009-09-16 15:12 @675

Si el modelo del enrutador es muy raro, quizás tengas que definir el Prompt:.

Por estos foros hemos hablado alguna vez de este tema. Usa el sistema de búsqueda o Google ajustado a este sitio.

Lo que sería interesante es ver alguna captura del diálogo con el enrutador, para ver qué prompt usa. Y en vez de decir "no funciona", sería más interesante saber qué error da o que es lo que hace.
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

Re: NET::TELNET::CISCO solo password

Notapor knightman » 2009-09-16 16:45 @740

uhmm, este es el prompt del telnet:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Equipo propiedad Privada
Prohibido el acceso no autorizado
El acceso no autorizado puede ser causa de acciones penales
Las acciones sobre esta maquina son monitoreadas y guardadas para
su control
User Access Verification
Password:
BUGA_MOTOROLA:7A>ena
Password:
BUGA_MOTOROLA:7A#
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Estoy estudiando los enlaces que me dijiste, ¡¡¡ muchas gracias !!! Sigo probando, al correr el script no me saca error alguno.
knightman
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2009-06-04 11:34 @523

Re: NET::TELNET::CISCO solo password

Notapor explorer » 2009-09-16 20:10 @882

Ese prompt es muy raro...

Te tocará personalizar la captura con el método de definición de prompts del módulo.
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

Re: NET::TELNET::CISCO solo password

Notapor knightman » 2009-09-17 09:53 @454

Listo, explorer, investigaré en el módulo la parte de prompts o si de pronto me puedes dar un ejemplo ¡¡¡ se lo agradecería muchísimo !!!. Muchas gracias por su colaboración.
knightman
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2009-06-04 11:34 @523

Re: NET::TELNET::CISCO solo password

Notapor explorer » 2009-09-17 11:20 @514

No has seguido el enlace que te puse, de Google. Allí están los hilos que han hablado de Net::Telnet::Cisco, algunos, con ejemplos.

Por ejemplo:

En este último, se puede ver un ejemplo del método waitfor(), que creo que es la que debes usar.
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

Re: NET::TELNET::CISCO solo password

Notapor knightman » 2009-09-18 17:17 @762

Hola explorer.

Leyendo los enlaces que me dio, vi esta parte que sirve de gran ayuda para saber qué está haciendo al momento de conectarse:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
Input_log=>"input.log"
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Al abrir ese log aparece lo siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Equipo propiedad Privada
Prohibido el acceso no autorizado
El acceso no autorizado puede ser causa de acciones penales
Las acciones sobre esta maquina son monitoreadas y guardadas para
su control
User Access Verification
Password:
BUGA_MOTOROLA:7A>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Es decir, ya la parte de solo autenticar con password está solucionada, ya tengo otro problema, es al entrar en modo usuario privilegiado (enable), no sigue en la línea de código
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$session->cmd("terminal length 0");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y luego con el enable. ¿Qué podrá ser? Porque intenté con otro equipo y aparece así en el log:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
ARMENIA CISCO>terminal length 0
enable
password
ARMENIA CISCO#
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Además intenté con el parámetro set length 0, y no entra en modo enable. ¿Qué otra cosa me podría sugerir? Muchas gracias.
Última edición por explorer el 2009-09-18 17:47 @783, editado 1 vez en total
Razón: Esto no es un teléfono móvil, ortografía
knightman
Perlero nuevo
Perlero nuevo
 
Mensajes: 15
Registrado: 2009-06-04 11:34 @523

Re: NET::TELNET::CISCO solo password

Notapor explorer » 2009-09-19 04:39 @235

Sería interesante ver la salida del log para saber qué se envía y qué se recibe.

Según la documentación del módulo (yo nunca he manejado un enrutador Cisco directamente) para pasar al modo privilegiado hay que ejecutar el método enable(), como tienes puesto en el código.

El problema está en el prompt: es BUGA_MOTOROLA:7A>.

Por defecto, Net::Telnet::Cisco busca por prompts de la forma siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use Modern::Perl;
  3.  
  4. my $reg_prompt = qr/^ [\w.-]+ \s? (?: \(config[^\)]*\) )? \s? [\$#>] \s? (?: \(enable\) )? \s* $/x;
  5.  
  6. my $prompt = 'BUGA_MOTOROLA:7A>';
  7.  
  8. say 'SI' if $prompt =~ $reg_prompt;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El programa no saca nada porque el prompt no coincide con el patrón de búsqueda: hay un carácter ':' que no coincide con la parte de [\w.-].

La solución es la que comenté antes: hay que indicar un prompt personalizado para este caso.

Debes usar la opción Prompt => $matchop, al crear el objeto Net::Telnet::Cisco, indicando un nuevo patrón de búsqueda. En tu caso sería tan fácil como añadir el ':' a la expresión regular: [\w.:-]+.
Última edición por explorer el 2009-09-22 17:41 @779, editado 1 vez en total
Razón: Typo
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

Siguiente

Volver a Básico

¿Quién está conectado?

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