• Publicidad

Ejecutar comandos remotamente

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

Ejecutar comandos remotamente

Notapor Radamantis » 2008-09-02 17:37 @776

Acá de nuevo con otro problema...

Les cuento... debo hacer una aplicación en Perl, la cual pueda testar el estado de unos procesos... para esto debo hacer una conexión remota con usuario y password y debo ejecutar un archivo xxxxx.sh, el cual me debe devolver el estatus de éste...

Mi problema va en que la conexión remota aun no me funciona... he tratado de usar varias librerías pero aun nada.
Código: Seleccionar todo
Net::SSH::Perl
Net::SSH::Expect


He usado esas librerías pero he tenido problemas con la instalación de éstas...

La primera me da el mismo Error. Traté de instalarlo de esta manera...
Código: Seleccionar todo
perl -MCPAN -e 'install Math::Pari'

Pero no hace la descarga de un archivo...

Luego la bajé y traté de instalarla... pero me sale lo siguiente durante la instalación:

Código: Seleccionar todo
../../pari-2.3.4/src/language/init.c: En la función ‘pari_version’:
../../pari-2.3.4/src/language/init.c:1983: error: ‘PARI_VERSION_SHIFT’ no se declaró aquí (primer uso en esta función)
../../pari-2.3.4/src/language/init.c:1983: error: (Cada identificador no declarado solamente se reporta una vez
../../pari-2.3.4/src/language/init.c:1983: error: para cada funcion en la que aparece.)
../../pari-2.3.4/src/language/init.c:1984: error: ‘PARI_VERSION_CODE’ no se declaró aquí (primer uso en esta función)
make[1]: *** [init.o] Error 1
make[1]: se sale del directorio `/home/xxxxxxxxxxx/Escritorio/Librerias/Math-Pari-2.010800/libPARI'
make: *** [libPARI/libPARI.a] Error 2


Para la otra librería... obtengo el siguiente error...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Net::SSH::Expect;

        my $ssh = Net::SSH::Expect->new (
            host => "192.168.1.xxx",
            password=> 'xxxxxx',
            user => 'xxxxx',
            raw_pty => 1
        );

        my $login_output = $ssh->login();
        if ($login_output !~ /Welcome/) {
            die "NO SE PUDO CONECTAR $login_output";
        }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Código: Seleccionar todo
SSHAuthenticationError Login timed out. The input stream currently has the contents bellow:  at /usr/local/share/perl/5.8.8/Expect.pm line 828


Y bueno... sin poder usar las librerías, he tratado varias cosas pero aún no tengo éxito...

Alguien que me oriente... Saludos
Avatar de Usuario
Radamantis
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2008-07-10 14:33 @648

Publicidad

Notapor explorer » 2008-09-02 18:27 @810

Antes que nada... intenta instalar Math::Pari, si existe, desde el gestor de paquetes de software de tu sistema operativo.

El error de compilación parece ser que es un fallo en el Makefile, que no le ha pasado correctamente los caminos al compilador, para localizar el fichero donde están definidas las constantes, como se comenta aquí.

En cuanto a la solución del problema, hay otras formas de hacerlo, como por ejemplo, colocar un servidor en el equipo destino, que escuche en un puerto. Cuando quieras, te conectas desde un cliente, con ese nombre de usuario y contraseña, el servidor lo valida, ejecuta el .sh, devuelve el resultado y cierra la conexión. Y para todo esto no necesitas SSH, salvo que necesites que la comunicación del usuario/contraseñas/resultado no vaya en claro. Pero aún así puedes usar la codificación que tu quieras, por lo que la comunicación puede ser muy segura.
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

Notapor Radamantis » 2008-09-04 15:30 @687

Gracias explorer..
La verdad no hubo caso con las librerías, así que dividí el programa en dos...

Como ya tenía un monitor, el cuál enviaba transacciones cada 5 min. y si este no responde, se envía un mail para dar aviso de que el proceso está abajo y se debe reponer...

En la parte del servidor existe un script shell, que gracias al crontab se está ejecutando cada 1 min... éste también monitoriza el proceso y lo levanta en caso de estar abajo... y como aún no está al 100% los programas se están complementando para automatizar la subida de este proceso...

Bueno gracias de nuevo... se agradece la ayuda.
Saludos.
Avatar de Usuario
Radamantis
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2008-07-10 14:33 @648


Volver a Básico

¿Quién está conectado?

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