• Publicidad

Enviar confirmación despues de ejecutar comando

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

Enviar confirmación despues de ejecutar comando

Notapor Orion » 2008-06-10 13:37 @609

Hola buenas a todos, estoy empezando con Perl y estoy haciendo un pequeño script que se conecta a una máquina por SSH y ejecuta un comando. Hasta aquí todo bien pero la ejecución de ese comando requiere confirmación (enviar un carácter "y", y luego introducir una pass) y no sé cómo hacerlo.

Os paso el código muy simple del script, se usa la librería Net::SSH::Perl, a ver si alguien me ilumina...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use Net::SSH::Perl;
$ssh=Net::SSH::Perl->new($host) or die $!;

$ssh->login($user, $password);
($stdout, $stderr, $exit)=$ssh->cmd(”comando_a_ejecutar”);
die $! unless (!$exit);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


He omitido las variables, la conexión funciona OK, ¡¡¡una ayudita please!!!

Gracias de antemano
Orion
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2008-06-10 13:25 @600
Ubicación: Valladolid

Publicidad

Notapor explorer » 2008-06-10 14:05 @628

Bienvenido a los foros de Perl en Español, Orion.

En la carpeta eg/ de la distribución de Net::SSH::Perl hay un par de ejemplos de cómo hacerlo. Consiste en definir un manipulador y luego ejecutar el comando interactivo.

Otra opción es usar otro módulo, como el Net::SSH::Expect. La diferencia es que éste usa el comando ssh del sistema.
Última edición por explorer el 2008-09-01 17:07 @755, editado 1 vez en total
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 Orion » 2008-06-11 02:15 @135

Hola Explorer:

Muchas gracias por tu respuesta. No conocía Net::SSH::Expect y como trabajo desde Linux prefiero usar un Wrapper como Expect.

Haciendo mil y una pruebas llego a este código por ejemplo para borrar el archivo "LISTA", con el comando rm LISTA y aceptando la confirmación:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Net::SSH::Expect;
my $ssh = Net::SSH::Expect->new (
            host => "localhost",
            password=> 'lo_que_sea',
            user => 'lo_que_sea',
            raw_pty => 1
);

$ssh->exec("rm LISTA");
$ssh->waitfor('rm:', 5); #Esperamos 5 segundos
$ssh->send("y");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El código anterior no funciona, se loguea pero no borra el archivo. Probando y sustituyendo $ssh->send("y"); por $ssh->exec("y"); el script sí tira pero no lo veo del todo correcto por eso de usar $ssh->exec.
Me puedes aconsejar sobre este tema o dar una ayudita.

¡¡¡Un saludo a los Perlianos y gracias!!!
Orion
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2008-06-10 13:25 @600
Ubicación: Valladolid

Notapor explorer » 2008-06-11 04:14 @218

Prueba a cambiar el exec del rm por un send.
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 Orion » 2008-06-11 06:25 @309

Al final ha funcionado solo con exec, pero bueno...el script como ya he dicho tira correctamente:

Posteo la solución por si algún usuario le sirve:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Net::SSH::Expect;
my $ssh = Net::SSH::Expect->new (
            host => "localhost",
            password=> 'lo_que_sea',
            user => 'lo_que_sea',
            raw_pty => 1
);
$comando='rm LISTA';

$ssh->exec("$comando");
$ssh->waitfor('rm:', 5); #Esperamos 5 segundos
$ssh->exec("y");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡¡¡¡OJO con las comillas dobles y las simples!!!!

¡¡¡Un saludo y muchas gracias por todo explorer!!!
Orion
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2008-06-10 13:25 @600
Ubicación: Valladolid


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado