• Publicidad

Ping en Perl

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

Ping en Perl

Notapor Kathyn » 2010-06-22 13:24 @600

¿Cómo puedo hacer un ping en Perl, que dé una salida como la que da shell, lo que quiero es gueardar esta salida en un archivo de texto?

¿Còmo se pueden ejecutar comandos shell en Perl?

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
ping -c5 www.google.com
PING www.l.google.com (72.14.253.104): 56 data bytes
64 bytes from 72.14.253.104: icmp_seq=0 ttl=53 time=114.009 ms
64 bytes from 72.14.253.104: icmp_seq=1 ttl=53 time=108.580 ms
64 bytes from 72.14.253.104: icmp_seq=2 ttl=53 time=112.932 ms
64 bytes from 72.14.253.104: icmp_seq=3 ttl=53 time=116.877 ms
64 bytes from 72.14.253.104: icmp_seq=4 ttl=53 time=113.552 ms

--- http://www.l.google.com ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 108.580/113.190/116.877/2.673 ms
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
Kathyn
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-06-22 13:17 @595

Publicidad

Re: Ping en Perl

Notapor explorer » 2010-06-22 13:41 @612

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

Si quieres tener la misma salida que el comando ping, lo mejor es ejecutar el comando ping del sistema:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $ping = qx(ping -c5 www.google.com);

print $ping;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


De otra forma, si quieres saber si una máquina está en línea o no, puedes usar algunos de los módulos disponibles que llaman a ping de forma portable (independiente del sistema operativo), como Net::Ping::External:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Net::Ping::External qw(ping);
  2.  
  3. my $ping = ping(host => "209.85.227.105");
  4. print "209.85.227.105 está en línea" if $ping;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Hay otros más en CPAN.
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: Ping en Perl

Notapor Kathyn » 2010-06-22 15:06 @671

Hola... gracias por tu respuesta. Lo ejecuté solo en un script y sí resulta, pero al meter ese trozo de código a un .cgi, no pasa nada. Es como si la variable $ping estuviera vacía.

Ese es el pedazo de código que tengo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub monitor{
  my $host = $_[0];
  my $count = $_[1];
  my $dirTxt = $_[2];
  my $ping;

  $ping = qx(ping -c5 http://www.google.com);
  open (TEXTO,">host.txt");
     print TEXTO $ping;
  close (TEXTO);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿Qué pasa que no funciona?
Avatar de Usuario
Kathyn
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-06-22 13:17 @595

Re: Ping en Perl

Notapor explorer » 2010-06-22 15:32 @689

Seguramente, que el comando ping no se encuentra en alguna de las rutas ($PATH) del cgi ejecutado.

Prueba a indicarlo mediante la ruta completa al comando ping. Por ejemplo, si en tu sistema el comando ping está en la carpeta /bin, entonces quedaría

$ping = qx(/bin/ping -c5 http://www.google.com);
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: Ping en Perl

Notapor Kathyn » 2010-06-22 15:43 @697

¡¡¡ Muchas Gracias !!!! Ahora todo resultó perfecto :)
Avatar de Usuario
Kathyn
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-06-22 13:17 @595


Volver a Básico

¿Quién está conectado?

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

cron