• Publicidad

Interactuar con programa lanzado desde Perl en Unix

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

Interactuar con programa lanzado desde Perl en Unix

Notapor Ruben_Marcos » 2012-04-20 07:59 @374

Hola, soy nuevo por aquí pero no es la primera vez que estos foros me resuelven alguna duda. En este caso he encontrado un caso muy parecido pero sigue sin resolverme la papeleta:

interactuar-con-shell-script-t6175.html


Estoy intentando hacer un script en Perl que lance un programa, monitorice la salida estándar y si pide entrada de datos, interaccione (no sé de antemano si el programa va a pedir datos, de ahí que monitorice la salida).

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use File::Path;
  5.  
  6. $|++;
  7.  
  8. open(HANDLE,"-|") || exec("/tmp/perl5/script.sh");
  9. while (<HANDLE>) {
  10.   print "$_";
  11.   if ( $_ =~ /Continuar/ ) {
  12.     print HANDLE, "y\n"; # ????
  13.   }
  14. }
  15.  
  16. close HANDLE;
  17.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Este es un ejemplo lanzando un script de Bash que pregunta si "Continuar" esperando que se introduzca "y" o "n".

script.sh
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. #!/bin/sh
  2.  
  3. for i in `seq 1 10`; do
  4.   print "Iteracion: $i"
  5.   if [ $i -eq 2 ]; then
  6.     echo "Continuar? (y/n):"
  7.   fi
  8. done
  9.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Entiendo que es la forma de ejecutar el script pero no se me ocurre la forma de que en función la salida introduzca datos.

Agradecería cualquier comentario al respecto.


Saludos.
Ruben_Marcos
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2012-04-19 08:19 @388

Publicidad

Re: Interactuar con programa lanzado desde Perl en Unix

Notapor explorer » 2012-04-20 10:59 @499

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

Puedes usar alguno de los módulos para Expect. Por ejemplo Expect::Simple.
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: Interactuar con programa lanzado desde Perl en Unix

Notapor Ruben_Marcos » 2012-05-02 10:18 @470

Gracias, explorer, y disculpas por no responder antes.

Acabo de hacer una serie de pruebas y Expect cumple con lo que necesito, en un principio.

Saludos.
Ruben_Marcos
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2012-04-19 08:19 @388


Volver a Administración

¿Quién está conectado?

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