• Publicidad

Problemas con Net::SSH::Perl

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

Re: Problemas con Net::SSH::Perl

Notapor mortenol » 2012-11-06 03:55 @205

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $chan8 = $ssh2->channel();
  2. $chan8->exec('repquota -g /opt/data1 > /tmp/quota_data1') or die;
  3. $chan8->close;
  4. my $chan9 = $ssh2->channel();
  5. $chan9->exec('cat /tmp/quota_data1') or die;
  6. while (<$chan9>) {
  7.           next if not /gc_/;              # filtro
  8.           chomp;
  9.           my @cuotas = split " ";
  10.  
  11.           $sumatorio   += $cuotas[2];
  12.           $totalcuotas += $cuotas[3];
  13. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Con shell() no lo he conseguido. No me da error ninguno, pero no ejecuta el comando.Lo he probado con un simple touch() en la máquina remota y no funciona. Lo he hecho con exec(), pero lo he tenido que hacer como he puesto en el código de arriba. Si lo hacía como me dijo explorer no me funcionaba. Me creaba el fichero, pero el valor de $sumatorio y $totalcuotas era 0.

Estoy haciendo un programa que necesita ejecutar bastantes comandos en varias máquinas remotas. ¿Influye si lo hago con exec() y abriendo y cerrando los canales?

Saludos.
mortenol
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2012-03-26 05:24 @267

Publicidad

Re: Problemas con Net::SSH::Perl

Notapor explorer » 2012-11-06 15:07 @671

Pues no debería dar problemas, si el sistema libera correctamente los recursos reservados en cada canal.

Si son muchas máquinas, a lo mejor te ves con la necesidad de poner un sleep(), para que haga una pausa cada cierto tiempo.

Lo ideal es usar el shell(), desde luego, porque te ahorra una llamada y la creación de un canal.

Mira este ejemplo: hace un blocking(0) antes del shell().
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: Problemas con Net::SSH::Perl

Notapor mortenol » 2012-11-13 05:32 @272

Al final he conseguido montar el html con todas las conexiones a los diferentes servidores.

Lo que ahora tengo que conseguir es mostrar algún mensaje mientras se genera todo el HTML ya que todo el proceso tarda unos 20 segundos. Lo intentaré hacer con JavaScript.

Gracias.
mortenol
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2012-03-26 05:24 @267

Re: Problemas con Net::SSH::Perl

Notapor explorer » 2012-11-13 07:58 @374

Si el código HTML se va formando poco a poco puedes usar estos dos trucos.

Coloca la instrucción

$|++;

al principio del programa Perl.

Y el HTML, si no tiene tablas o capas, puedes ir sacando los datos en forma de párrafos (<p>). Por efecto del cambio de la variable $|, esa salida será inmediata, hacia el navegador del usuario, y éste verá como va saliendo la información poco a poco.
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: Google [Bot] y 4 invitados

cron