• Publicidad

Enviar letra despues de un carácter

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

Enviar letra despues de un carácter

Notapor carlitos2308 » 2011-09-07 13:09 @590

Hola amigos, gusto en saludarlos. Tengo un problema con un script ya que luego de ingresar a un equipo y autenticarme de manera correcta me lleva a un menú en el cual debo enviarle una letra, 'q', por ejemplo, seguido de un enter para entrar a otro menú y así sucesivamente. El problema es que al enviarle la letra, de nuevo 'q' por ejemplo, no entra al menú que necesito, les dejo el script en espera de su valiosa ayuda.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use Net::Telnet();
  4. use CGI qw(:standard);
  5. use strict;
  6. use warnings;
  7. my $comm1 = 'q';
  8. my $comm2 = 'y';
  9.  
  10.  
  11. my $t = new Net::Telnet (Prompt=>'/:/', Timeout => 30, Dump_Log=>'log.txt', Errmode=>'return');
  12.  
  13. $t->open($_) or next sigue;
  14. $t-> cmd ($username);
  15. $t -> waitfor (/:/);
  16. $t-> cmd ($password);
  17. $t -> waitfor (/:/);
  18. $t -> cmd ("$comm1 \n");
  19. $t -> waitfor (/]/);
  20. $t -> cmd ($comm2);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4



Este es el menú del equipo al que ingreso

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
If you need help later, type ?.

COMMAND (M/R/S/X/Q):
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
carlitos2308
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2010-07-13 15:10 @673

Publicidad

Re: Enviar letra despues de un carácter

Notapor explorer » 2011-09-07 14:04 @628

Pues por las pistas, no estoy seguro... salvo que veo que un comando lo envías con "\n", y el otro no.

¿No sale nada en el log?

Date cuenta de una cosa: por defecto, Net::Telnet pone el valor de output_record_separator a "\n". Eso quiere decir que a todas las cadenas que envías con cmd(), el agrega un "\n".

Entonces... en el primer cmd()... estás enviando, en realidad, dos "\n".
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: Enviar letra despues de un carácter

Notapor carlitos2308 » 2011-09-07 15:32 @689

Hola, explorer.

Gracias por tu pronta respuesta, en realidad con el primer cmd() lo puse así para verificar si eso podía ayudar en algo, pero he intentado sin ponerle el "\n" y es el mismo resultado.

Con respecto al log, en efecto me muestra el acceso con el usuario y contraseña, se ve que envía la letra 'q' pero no llega al menú siguiente.

Si me puedes decir cómo sacar un log más limpio que el del Dump_Log para podértelo mostrar.

De antemano, gracias por la ayuda.
carlitos2308
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2010-07-13 15:10 @673

Re: Enviar letra despues de un carácter

Notapor explorer » 2011-09-07 15:54 @704

¿A qué máquina quieres conectarte? Me refiero sistema operativo, o marca y modelo del aparato.

Hay algunos módulos en CPAN específicos para ciertos aparatos (sobre todo, CISCO).

Cuando dices que espera una letra, ¿es que solo espera una letra? ¿O es que además hay que pulsar el 'enter'? Y fíjate que además de $comm1, estás enviando un espacio en blanco. Para algunas máquinas, ese espacio extra no influye, pero para otros, sí.

Puedes recortar el log, y me lo mandas por un mensaje privado (menú de arriba: mensajes privados).
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: Enviar letra despues de un carácter

Notapor carlitos2308 » 2011-09-07 16:30 @729

Es una aplicación creada por un proveedor de servicios que está sobre un SO Unix.

En realidad hay que poner la letra y luego darle enter.
carlitos2308
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2010-07-13 15:10 @673

Re: Enviar letra despues de un carácter

Notapor explorer » 2011-09-07 16:43 @738

En el segundo waitfor() estás esperando por un ']'. ¿Es correcto?

Quizás una solución sea no esperar... es decir, manda la 'q' en un cmd(), y luego mandas la siguiente letra, inmediatamente.

Hasta no ver más detalles de la salido o el log, poco más se puede decir...
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: Enviar letra despues de un carácter

Notapor carlitos2308 » 2011-09-07 17:16 @761

Traté de enviarte el log, el mensaje me dice que fue enviado correctamente pero al revisar está en la bandeja de salida, así que lo pongo acá (en resumen)

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
root..
ÿý.ÿý ÿý#ÿý$
ÿü.ÿü ÿü#ÿü$
ÿû.ÿý.ÿý.ÿû.ÿý!
ÿý.ÿü.ÿü.ÿþ.ÿü!
ÿû.
ÿý.
..Prohibido el
ingreso. Solo pe
rsonal autorizado
..Login: root
..Password:
*********..
q....
*********. .. ..
.. .. .. .. ..
.. ...Using //2/
dev/ttypd. Last
login: Fri Sep
2 12:42:10 2011
ND (M/R/S/X):
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
carlitos2308
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2010-07-13 15:10 @673

Re: Enviar letra despues de un carácter

Notapor explorer » 2011-09-07 17:34 @773

Nada, tampoco me dice nada...

¿El log aparece así, con tan pocas columnas?

Un volcado hexadecimal podría ayudar a ver qué significan los caracteres extraños, pero no creo que aporten mucho...

Estoy viendo que se para en

(M/R/S/X)

y en esa línea no veo ningún carácter ']', que marcas en el waitfor().
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: Enviar letra despues de un carácter

Notapor carlitos2308 » 2011-09-07 18:09 @798

Se para en ND (M/R/S/X): debido a que allí es donde se debe enviar el carácter 'q' y luego 'enter'.

Luego que se envía 'q' y 'enter', debe aparecer
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
If you need help later, type ?.

COMMAND (M/R/S/X): q
Go to QNX? [y/N]
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Por eso es que espero por ']' luego de enviar el $comm1.


Solo como referencia ya lo envié como $comm1\n quitando le el waitfor (/]/); y da el mismo problema.
carlitos2308
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2010-07-13 15:10 @673

Re: Enviar letra despues de un carácter

Notapor explorer » 2011-09-07 21:00 @917

Si tienes que enviar la 'q' seguido de un 'enter', no es necesario que le pongas el "\n" porque ya se lo añade el cmd().

De todas maneras, dices que te conectas a un sistema UNIX, pero, ¿desde qué sistema te conectas?

Algunas veces ocurren estos errores porque la gente se conecta desde un Windows, y los caracteres de fin de línea del 'enter' no coinciden con los que espera el sistema UNIX.
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


Volver a Administración

¿Quién está conectado?

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