• Publicidad

Caracteres extraños en Net::SSH::Expect

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

Caracteres extraños en Net::SSH::Expect

Notapor netsoul » 2011-06-20 09:36 @441

Hola. Tengo un problema con el resultado final de mi código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. use utf8;
  7. use locale;
  8. use open OUT => ':locale';
  9.  
  10. use Net::SSH::Expect;
  11.  
  12. my $ssh = 'Net::SSH::Expect'->new(
  13.  
  14.     host     => 'mihost',
  15.     password => 'contrasena',
  16.     user     => 'usuario',
  17.     port     => 23,
  18.     raw_pty  => 1
  19. );
  20.  
  21. my $login_output = $ssh->login();
  22. if ( $login_output !~ /Welcome/ ) {
  23.     die "Login has failed. Login output was $login_output";
  24. }
  25.  
  26. $ssh->exec("stty raw -iutf8");
  27. $ssh->exec("stty raw -echo");
  28.  
  29. print $ssh->peek(0);
  30. $ssh->eat( $ssh->peek(0) );
  31.  
  32. my $su = $ssh->exec("su postgres");
  33.  
  34. #     print "$su\n";
  35.  
  36. my $psql = $ssh->exec("psql -d BASEDATOS");
  37.  
  38. #     print "$psql\n";
  39.  
  40. my $select = $ssh->exec('select * from pedidos where id_pedido < 10;');
  41.  
  42. my @resultado = split /\n/, $select;
  43.  
  44. my ( $campo, $registro ) = ( $resultado[0], $resultado[1] );
  45.  
  46. my @fields = split /\|/, $campo;
  47.  
  48. print "$_\t" for @fields;
  49.  
  50. $ssh->close;
  51.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Este código imprime correctamente en la consola de Ubuntu, pero al querer guardar en un archivo, haciendo $ perl codigo.pl > pedidos.txt, me imprime unos caracteres extraños:

Imagen

Saludos y gracias.
Última edición por explorer el 2011-06-20 09:41 @445, editado 1 vez en total
Razón: Formateo del código con la ayuda de perltidy
With Perl
Imagination is more important than knowledge. Albert Einstein.
netsoul
Perlero nuevo
Perlero nuevo
 
Mensajes: 150
Registrado: 2008-05-04 01:11 @091

Publicidad

Re: Caracteres extraños en Net::SSH::Expect

Notapor explorer » 2011-06-20 10:03 @460

No se leen muy bien en la captura de pantalla (hubiera sido mejor copiarlo como texto), pero yo apuesto a que son secuencias de caracteres de control de la terminal.
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: Caracteres extraños en Net::SSH::Expect

Notapor netsoul » 2011-06-20 10:30 @479

Voy a leer el enlace que pusiste.

Esta es la imagen ampliada.

Imagen

Este es el texto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
[?1049h[?1h=
 id_pedido       id_cliente      id_pais         id_estado_ped   peso_pedido            fecha         
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
With Perl
Imagination is more important than knowledge. Albert Einstein.
netsoul
Perlero nuevo
Perlero nuevo
 
Mensajes: 150
Registrado: 2008-05-04 01:11 @091

Re: Caracteres extraños en Net::SSH::Expect

Notapor netsoul » 2011-06-20 10:43 @488

¿La solución podría ser manipular el archivo final para poder borrar esos caracteres?

¿O existe otra manera?

Gracias.
With Perl
Imagination is more important than knowledge. Albert Einstein.
netsoul
Perlero nuevo
Perlero nuevo
 
Mensajes: 150
Registrado: 2008-05-04 01:11 @091

Re: Caracteres extraños en Net::SSH::Expect

Notapor explorer » 2011-06-20 10:54 @496

Pues sí, una forma sería quitar esos caracteres, si supieras cómo quitarles y de dónde.

Otra solución sería mirar las opciones de ejecución de psql para ver si alguna sirve para que no genere esos códigos.
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: Caracteres extraños en Net::SSH::Expect

Notapor netsoul » 2011-06-20 13:09 @589

Muchas gracias. La solucion que encontré fue esta:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $select =~ s/^\x1B\[\?1049h\x1B\[\?1h\x1B=\r\s//i;
  2. $select =~ s/\x08//gi;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
With Perl
Imagination is more important than knowledge. Albert Einstein.
netsoul
Perlero nuevo
Perlero nuevo
 
Mensajes: 150
Registrado: 2008-05-04 01:11 @091


Volver a Básico

¿Quién está conectado?

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