• Publicidad

Verificar conexión

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Verificar conexión

Notapor rklz » 2007-06-21 23:23 @016

Hola gente , les cuento el problema :
Actualmente tengo un script de Perl que uso de dialer para la conexión de ADSL, el problema es que cuando lo termino de correr tengo que chequear si realmente conecto mediante "ping google.com" o cualquier otro server .. , mi pregunta es cómo hacer para que Perl se dé cuenta si la conexión se genero correctamente o no ..

Muchas gracias :)
Avatar de Usuario
rklz
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2007-05-25 13:28 @603
Ubicación: Rosario, Argentina

Publicidad

Notapor explorer » 2007-06-22 03:53 @203

Pues... haciendo el ping.... :-)

Lo ejecutas y miras lo que sale. Si alguna de las líneas se parece a un paquete respondido de forma correcta, pues es que hay conexión.

Pero hay otra forma: lo ejecutas con la opción '-c 4' para que sólo haga 4 intentos (yo lo uso con sólo '-c 1' en red local) y miro el valor devuelto con el system() del Perl (recordar que está un 'poco' escondido). Según la página de manual de ping:

Código: Seleccionar todo
     Si ping no recibe ningún paquete de respuesta en absoluto, se cerrará con
     un código 1. Si ocurre un error, mostrará el código 2. En cualquier otro
     caso, el programa terminará con un código 0. Esto hace posible utilizar
     los códigos de terminación del programa para comprobar si el ordenador al
     que se dirige el ping da señales de vida o no.
Así que si recibo un 0, es que todo va bien y hay conexión.
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 rklz » 2007-06-23 14:18 @637

¿Cómo es que el ping devuelve 0, dónde aplico la función system()?

¿Me podrías dar una manito y pegarme ese pedacito de script?

Muchísimas gracias
Avatar de Usuario
rklz
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2007-05-25 13:28 @603
Ubicación: Rosario, Argentina

Notapor creating021 » 2007-06-23 14:49 @659

Hay varias formas... puedes interntar usar Net::Ping o usar Socket.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Socket;
if(inet_aton("perl.com")){
  print "Hay conexión\n";
}
else {
  print "No hay conexión\n";
}
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Esto trata de resolver el domonio/ip de X servidor (en IPv4).
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor rklz » 2007-06-23 15:39 @693

Muchas gracias , consiso y bien explicado , me sirve un monton , una pregunta , este Socket es el socket.h de C no ?
Avatar de Usuario
rklz
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2007-05-25 13:28 @603
Ubicación: Rosario, Argentina

Notapor explorer » 2007-06-23 17:58 @790

rklz escribiste:¿Cómo es que el ping devuelve 0, dónde aplico la función system()?

¿Me podrías dar una manito y pegarme ese pedacito de script?
En los foros Intermedio y Experto no se suele presentar código sino es estrictamente necesario.

También podías haber buscado 'ping' en el sistema de búsqueda de este foro. Aquí tienes un ejemplo usando el comando ping del sistema.
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 creating021 » 2007-06-23 19:59 @874

rklz escribiste:Muchas gracias , consiso y bien explicado , me sirve un monton , una pregunta , este Socket es el socket.h de C no ?

Sí y no, verás, resulta que Socket es un módulo que viene con perl (no hay que instalarlo, a no ser que estes en BeOS o algo así).
Este módulo es una conexión a socket.h por medio de .xs, solo lee el manual y te enteras:

Socket description at CPAN
explorer escribiste:En los foros Intermedio y Experto no se suele presentar código sino es estrictamente necesario.

También podías haber buscado 'ping' en el sistema de búsqueda de este foro. Aquí tienes un ejemplo usando el comando ping del sistema.


Lo bueno de usar ping (ya sea por el comando o por el módulo) es toda la información que puede tener, además de los diferentes protocolos que te da.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2007-06-23 20:04 @878

¿El ping da protocolos? Tenía entendido que el ping sólo usaba el protocolo ICMP:

Código: Seleccionar todo
DESCRIPTION
       ping  uses  the ICMP protocol's mandatory ECHO_REQUEST datagram to elicit an ICMP ECHO_RESPONSE from a
       host or gateway.  ECHO_REQUEST datagrams (``pings'') have an IP and ICMP header, followed by a  struct
       timeval and then an arbitrary number of ``pad'' bytes used to fill out the packet.
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 creating021 » 2007-06-24 15:09 @673

explorer escribiste:¿El ping da protocolos? Tenía entendido que el ping sólo usaba el protocolo ICMP:

Código: Seleccionar todo
DESCRIPTION
       ping  uses  the ICMP protocol's mandatory ECHO_REQUEST datagram to elicit an ICMP ECHO_RESPONSE from a
       host or gateway.  ECHO_REQUEST datagrams (``pings'') have an IP and ICMP header, followed by a  struct
       timeval and then an arbitrary number of ``pad'' bytes used to fill out the packet.

Deberías de leer sobre Net::Ping
En cuanto al comando, depende de que implementación uses. :wink:
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor explorer » 2007-06-24 16:06 @712

Pues entonces debes especificar. El comando ping sólo usa el ICMP. En tu comentario anterior has igualado la funcionalidad del comando ping UNIX con el del Net::Ping.
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

Siguiente

Volver a Intermedio

¿Quién está conectado?

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