• Publicidad

Problema con Net::OpenSSH a Cisco

¿Eres administrador de sistemas? Este foro es para todos aquellos temas relacionados con el uso de Perl para administración de sistemas.

Re: Problema con Net::OpenSSH a Cisco

Notapor salva » 2014-05-20 03:25 @184

jero2528 escribiste:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. muxclient: master returned too much data (8 > 4)
  2.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Parece que te está afectando un bug presente en viejas versiones de OpenSSH. Prueba a utilizar una versión más reciente del binario.

En la documentación del módulo Net::OpenSSH, hay una sección FAQ que habla de cómo interactuar con enrutadores y otros equipos de red que a veces tienen implementaciones de SSH que son problemáticas.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Publicidad

Re: Problema con Net::OpenSSH a Cisco

Notapor jero2528 » 2014-05-26 09:38 @443

Pude hacer el cambio que me indicaste pero, finalmente, durante las pruebas, pude ver que para los Cisco solamente ejecuta un comando con OpenSSH, y tal vez tendré que usar Expect dado que no me funciona con los Cisco el OpenSSH de la forma en que lo requiero.
Saludos,

Jero2528
Avatar de Usuario
jero2528
Perlero nuevo
Perlero nuevo
 
Mensajes: 50
Registrado: 2014-05-14 15:43 @697
Ubicación: Bogota, Colombia

Re: Problema con Net::OpenSSH a Cisco

Notapor salva » 2014-05-26 10:00 @458

Sí, las implementaciones de SSH que tienen los equipos de red muchas veces son bastante malas. También es verdad que muchas veces esos problemas se solucionan actualizando los firmware.

En cuanto a lo de lanzar varios comandos. A veces se pueden pasar por por stdin:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. ($out, $err) = $ssh->capture({stdin_data => "cmd1\r\ncmd2\r\ncmd3\r\n...\r\nexit\r\n"});
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Problema con Net::OpenSSH a Cisco

Notapor jero2528 » 2014-05-26 12:24 @558

Salva: muchas gracias, al menos ya está enviando los comandos, pero tengo otro inconveniente y es que me conecto por consola vía SSH al equipo en cuestión y ejecuto el comando copy running-config tftp, le doy enter y luego me pide la IP o host del equipo donde quiero dejar la copia; se la inserto y bien; luego me pide un nombre para el archivo; así también lo asigno sin problema; y finalmente me muestra que hace la copia sin inconvenientes. ¿Qué puede estar sucediendo a través del script? ¿Ya que desde él no encuentra la IP del equipo al que quiero copiar la configuración?

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. RouterCISCO-Z0-DATOS#copy running-config tftp
  2.  
  3. Address or name of remote host []?
  4.  
  5. ?Host name or address not specified
  6.  
  7. %Error parsing filename (Unknown error 0)
  8.  
  9. COBOGDIAG97-Z0-DATOS# 10.11.40.103
  10.  
  11. Trying 10.11.40.103 ...
  12.  
  13. % Connection refused by remote host
  14.  
  15.  
  16.  
  17. COBOGDIAG97-Z0-DATOS#
  18.  
  19. COBOGDIAG97-Z0-DATOS#cobogdiag97-z0-datos-confg
  20.  
  21. Translating "cobogdiag97-z0-datos-confg"
  22.  
  23. % Unknown command or computer name, or unable to find computer address
  24.  
  25. COBOGDIAG97-Z0-DATOS#
  26.  
  27. COBOGDIAG97-Z0-DATOS#exit
  28.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Creo que si te fijas en lo anterior él está tratando de ejecutar la secuencia pero no lo hace como cuando lo hago manualmente, es decir, si te fijas le da un tiempo y según este resultado no he establecido la IP del equipo al que quiero copiar; por ello genera el error. ¿Cómo puedo hacer para que lo ejecute más seguido?

No sé si me he hecho entender :) :?
Saludos,

Jero2528
Avatar de Usuario
jero2528
Perlero nuevo
Perlero nuevo
 
Mensajes: 50
Registrado: 2014-05-14 15:43 @697
Ubicación: Bogota, Colombia

Re: Problema con Net::OpenSSH a Cisco

Notapor jero2528 » 2014-05-26 14:54 @662

Hola, salva... Super bien. Ya me funcionó, solo que al final me genera otro error pero sí ejecuta los comandos :) Solamente tuve que omitir el "\r" y ya él solito tomó los comandos correctamente :)

El error es el siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# DESTROY(Net::OpenSSH=HASH(0xa5c20f8), pid: 21850)
# killing master
# sending exit control to master
# set_error(1 - control command failed: master ssh connection broken)
# _kill_master: 21850
# waitpid(master: 21850) => pid: 21850, rc: No such file or directory
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

No sé si tal vez lo tiene guardado en memoria, y tampoco con exactitud qué genera ese error, ya que me fijé y sí ejecuta sin problema los demás comandos... :?
Saludos,

Jero2528
Avatar de Usuario
jero2528
Perlero nuevo
Perlero nuevo
 
Mensajes: 50
Registrado: 2014-05-14 15:43 @697
Ubicación: Bogota, Colombia

Re: Problema con Net::OpenSSH a Cisco

Notapor salva » 2014-05-26 14:59 @666

Probablemente el Cisco cierra la conexión de SSH después de responder al primer comando.

En principio puedes ignorar el error, es inofensivo.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Problema con Net::OpenSSH a Cisco

Notapor jero2528 » 2014-05-26 15:23 @682

¿Cómo podría obviarlo? Lo que sucede es que mis scripts tratan de dar la información según ocurra, y para los scripts se hace más importante cualquier error. Entonces, él antepone la información respecto al error frente a la que realmente se ejecutó. Entonces me gustaría saber si hay forma de cortar ese error de raíz :)
Saludos,

Jero2528
Avatar de Usuario
jero2528
Perlero nuevo
Perlero nuevo
 
Mensajes: 50
Registrado: 2014-05-14 15:43 @697
Ubicación: Bogota, Colombia

Re: Problema con Net::OpenSSH a Cisco

Notapor salva » 2014-05-27 04:35 @233

En realidad no se genera ningún error.

Lo que tu estás viendo son las trazas de depurado que habrás activado dándole algún valor a $Net::OpenSSH::debug. Como su nombre indica esto es una ayuda para solucionar bugs en el módulo o en los programas que lo utilizan y su finalidad no es generar registros de actividad.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Re: Problema con Net::OpenSSH a Cisco

Notapor jero2528 » 2014-05-27 08:46 @407

Hola salva, muchas gracias, tenías razón, es por el tema de tener activo el debug, aun así lo comenté en el código, luego lo ejecuté y realiza la tarea sin problemas. Me llamó la atención el mensaje a continuación:

Pseudo-terminal will not be allocated because stdin is not a terminal.
Connection to 10.11.112.3 closed by remote host.
muxclient: master returned too much data (8 > 4)


Luego de que salió esa respuesta ejecuta normalmente los comandos. ¿Por qué sucede eso? ¿Debe preocuparme? ¿Es posible que falle? Si cambio por este código a todos mis scripts y lo ejecuto sobre equipos Juniper, ¿crees que funcionará?

Este es el código con el que probé:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. #####################################################################################
  3. # Jero2528
  4. # Marzo 2014
  5. #####################################################################################
  6.  
  7. use Net::OpenSSH;
  8. require '/usr/local/procedimientos.pl';
  9.  
  10. #$Net::OpenSSH::debug = -1; # activar todo el sistema de trazado
  11.  
  12. my $cmd = 'show version';
  13. my $host = '10.11.112.3';
  14. my $mensajeerror="";
  15. my $salida;
  16.  
  17. @conn1 = conectar_ssh($host);
  18.  
  19. if (($conn1[0])) {
  20.         $mensajeerror="Equipo=name, IP=$host, Descripcion=$conn1[0]\n<br>";
  21.         print "$mensajeerror\n";
  22. }else
  23. {
  24.         #@out=$conn1[1]->capture("enable\n");
  25.         #@out=$conn1[1]->capture("show running-config");
  26.         #@out=$conn1[1]->system("copy running-config tftp\n");
  27.         #@out=$conn1[1]->capture_tunnel({stdin_data =>"200.58.9.10\n"},"$host",22);
  28.         ### Los anteriores comentarios fueron mis intentos fallidos para lograrlo jejeje ###
  29.         @out=$conn1[1]->capture({stdin_data =>"copy running-config tftp\n 10.11.25.135\nnombre_de_mifichero_de_confg\nquit\n"});
  30.        
  31.         foreach $line1 (@out) {
  32.                 $salida .= "$line1\n";
  33.     }
  34.         print "----- $host -----\noutput:\n$salida]\nerror:\n$mensajeerror\n";
  35. }
  36.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Con esto ya podríamos dar por resuelta mi problemática.

Salva, explorer, estoy muy agradecido por la ayuda que me brindaron, muchísisisisimas gracias.

Desde Colombia, un gran apretón de mano.

:)
Saludos,

Jero2528
Avatar de Usuario
jero2528
Perlero nuevo
Perlero nuevo
 
Mensajes: 50
Registrado: 2014-05-14 15:43 @697
Ubicación: Bogota, Colombia

Re: Problema con Net::OpenSSH a Cisco

Notapor salva » 2014-05-27 08:57 @415

Como ya te comenté anteriormente, esos mensajes de error son debidos a un error en OpenSSH que está corregido en versiones recientes. Mi consejo es que actualices el binario a una versión más reciente.

En cuanto a si funcionará con otros equipos, eso la única manera de saberlo es probando. SSH es un protocolo complejo y los equipos de red no siempre lo implementan correctamente.
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

AnteriorSiguiente

Volver a Administración

¿Quién está conectado?

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