Archivo

Entradas Etiquetadas ‘google’

Saber si estamos conectados a internet [bash]

Miércoles, 26 de Mayo de 2010 Gaspar Fernández Sin comentarios

cat_linuxA menudo lanzo scripts que necesitan saber si la conexión a Internet está disponible para lanzarse, en caso de que no lo esté, invertirán mucho tiempo en terminar o terminarán con muchos errores. La forma más fácil de saber cuándo estamos conectados es intentar acceder a un ordenador que sepamos seguro que está conectado… por ejemplo google.com, que para eso está.

Podemos por ejemplo hacer ping al servidor, pero un ping es muy visual, necesitaremos hacer algo más para aprovechar la salida de ese ping; aunque también podemos intentar conectar por el puerto 80 (http).

Dejo varios métodos para poder hacerlo de forma sencilla desde la línea de comandos:

ping

$ if ping -c1 google.com &>/dev/null; then echo “Tienes conexion”; else echo “no tienes conexion”; fi

Con esta línea haremos un ping a google, sólo mandaremos un paquete (-c1) y mandaremos la salida de ping a /dev/null (no nos interesa lo que nos diga, queremos hacer un script amigable al usuario, sin mensajes raros), si ping no da errores, se ha hecho bien, mostramos el mensaje de tienes conexion, si no, el de no tienes conexión.

Aunque en los siguientes scripts haremos una salida de texto, siempre podremos hacer un exit y terminar el script cuando no haya conexión.

netcat

if netcat -z google.com 80; then echo “Tienes conexion”; else echo “no tienes conexion”; fi

Igual que antes pero probamos la conexión al puerto 80, netcat utiliza el parámetro -z para ver sólo si se puede conectar, una vez se conecta, se cierra la conexión.

escribiendo en el servidor directamente

Tenemos dos métodos más…

if echo “”>/dev/tcp/totaki.com/80; then echo “Tengo conexion”; else echo “no tengo”; fi

Aquí conectamos con el servidor a través de /dev/tcp (necesitamos tener permisos), al servidor le enviamos una cadena vacía.

También podemos hacer:

if exec 3>/dev/tcp/totaki.com/80; then echo “Tengo conexion”; else echo “no tengo”; fi

Utilidades y notas

Podemos utilizarlo por ejemplo en cron scripts que requieran conexión a internet (subir una copia de seguridad a un servidor externo, enviar nuestra ip de Internet a un servidor), o por ejemplo para saber la disponibilidad de un servidor, es decir, si tenemos alquilado un servidor a lo mejor nos interesa monitorizarlo para saber si está caído, en fin los usos son los que nos de la imaginación.

Antes dije que podríamos incluir un exit cuando el script no tenga conexión, pero también podremos llamar a otro script en el caso de tener conexión, o hacer lo siguiente (con el ejemplo de ping):

1
2
3
4
5
6
7
8
#!/bin/bash
if ping -c1 google.com &>/dev/null;
then
        echo "Ejecutando script";
        $@
else
        echo "no tienes conexion";
fi

Llamamos al fichero internet, damos permisos de ejecución y podremos llamar a cualquier script de la siguiente forma:

$ internet wget http://www.totaki.com/poesiabinaria

(por ejemplo), el script sólo se ejecutará si estamos conectados a Intenet

Mejoras

Bueno, puede pasar, que alguna vez google.com esté caído, podemos intentar pasar por dos o tres servidores, si vemos que uno de ellos responde (siempre que no sea de una red local) sabremos que estamos conectados.

Foto: fotohiro (Flickr)

Internet… dependencia

Lunes, 11 de Enero de 2010 Gaspar Fernández Sin comentarios

adicto a internetMás allá de la adicción a Internet, que se viene estudiando desde hace bien poco vengo observando un fenómeno inusual desde hace ya un par de años (al menos, tan común y con tal repercusión y consecuencias). Dicho fenómeno que, yo creo que debe tener una explicación más allá de la pereza humana, es el hecho de que muchas personas:

  • cuando quieren escuchar una canción que tienen en su colección, la buscan en youtube.
  • cuando quieren consultar un manual cuya versión electrónica se encuentra en el disco duro, lo buscan en Internet.
  • cuando tienen que llamar a un compañero de piso (lo sé hace unos años yo lo hacía), lo hacen por mensajería instantánea.
  • cuando quieren saber cómo se escribe una palabra, hacen una encuesta a Google (se escribe de una forma, y se mira el número de resultados, y de otra, y el que más resultados tenga, gana. Ejemplo: obvio, ovbio).
  • cuando al consultar un documento previamente impreso y guardado en el disco duro, lo volvemos a buscar en Internet.
  • antes de hacer una determinada tarea, han de informar por Facebook/MySpace/Twitter…
  • y muchos más casos que seguro que conocéis.

Lo realmente chocante es que en muchas ocasiones, se tarda mucho más de esta forma que por ejemplo, consultando el manual offline, escribiendo la palabra en el corrector ortográfico, o dándole una voz al compañero de piso… pero la adicción tecnológica es mucho más fuerte. Pero este efecto, ¿lo produce la pereza? ¿lo produce la falta de ganas de pensar en una referencia que nos de la información? ¿la idea de saber que ordenadores en la otra parte del mundo trabajan para nosotros?

Y lo realmente indignante (al menos para mi), es que muchas personas, cuando la compañía de Internet les desconecta… dejan de existir. Es impresionante ver cómo las personas se quedan colgadas, sin vida, reintentando conectar una y otra vez y contando los segundos que quedan para recuperar la conexión… incluso cuando offline también se dispone de mucha información.  Es más, aunque no se esté utilizando la red, el simple hecho de no poder mirar las novedades en la red de Facebook, es capaz de dejar desconectado del mundo a una persona como si de The Matrix se tratase.

Visita otras webs de la red