• Publicidad

Capturar la salida de un comando

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

Capturar la salida de un comando

Notapor visualfree » 2009-11-27 22:12 @967

Por ejemplo, yo con nmap puedo escanear una dirección IP (host). Hago lo siguiente:

system("nmap localhost");

y claro, obtengo los resultados por el terminal, pero yo quiero obtener los resultados en mi programa y no que lance los resultados en el terminal. Por ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$var = "nmap localhost";
system($var);
capturo($var);
print ($resultadosdeVAR);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Espero se entienda mi pregunta...
visualfree
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2009-11-19 03:01 @167

Publicidad

Re: Capturar la salida de un comando

Notapor explorer » 2009-11-27 22:21 @973

Si la salida del comando es hacia la salida estándar, puedes capturar esa salida ejecutando el comando con qx().

my $nmap_del_host = qx(nmap localhost);
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: Capturar la salida de un comando

Notapor visualfree » 2009-11-27 22:38 @985

Bien, ¿y cómo evitas las salidas en la consola?...
visualfree
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2009-11-19 03:01 @167

Re: Capturar la salida de un comando

Notapor explorer » 2009-11-27 22:49 @992

Si al ejecutar con qx() capturas la salida, pero aun así hay salida hacia la terminal, es que el comando está enviando información no solo hacia la salida estándar sino también hacia la salida estándar de error (STDERR).

Si sigues el enlace de qx() hasta donde se explica cómo se usa, podrás ver cómo capturar tanto la salida normal como la de error.

Pone, por ejemplo, que si la salida de error no te interesa, la puedes despreciar:

my $nmap_del_host = qx(nmap localhost 2>/dev/null);

¡Ojo! Esta es la solución para un sistema Unix/Linux. Para Windows, es distinto. Lo más cómodo, dice, es desviar esas salidas hacia ficheros.

También tienes en perlfaq8 una forma completa de capturar lo que llega de STDERR.
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: Capturar la salida de un comando

Notapor visualfree » 2009-11-27 23:27 @019

Gracias nuevamente.
visualfree
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2009-11-19 03:01 @167

Re: Capturar la salida de un comando

Notapor visualfree » 2009-11-27 23:56 @039

Problema resuelto, error de capa 8..
visualfree
Perlero nuevo
Perlero nuevo
 
Mensajes: 41
Registrado: 2009-11-19 03:01 @167


Volver a Básico

¿Quién está conectado?

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

cron