Publi

Saber si estamos conectados a internet [bash]

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.poesiabinaria.net

(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)

También podría interesarte....

There are 15 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. Mauro /
    Usando Google Chrome Google Chrome 44.0.2403.130 en Windows Windows NT

    Tienes malo el ejemplo del ping cuando detecta conexion unrechable

    1. Gaspar Fernández / Post Author
      Usando Mozilla Firefox Mozilla Firefox 41.0 en Ubuntu Linux Ubuntu Linux

      Hola Mauro,
      ¿Podrías indicarme dónde está el problema? Acabo de copiar la línea tal cual y me funciona incluso cuando desconecto el cable de red. Ten en cuenta que no funcionaría en Microsoft Windows.
      Gracias

  3. carliños /
    Usando Mozilla Firefox Mozilla Firefox 45.0 en Linux Linux

    gran post! Aprendí a usar if sin «[ ]». Muchas Gracias.

  4. AnonymousWebHacker /
    Usando Mozilla Firefox Mozilla Firefox 62.0 en Windows Windows 8

    EN CASO DE PING Y QUEDE [conexion unrechable], QUE NO SON LAS VARIANTES DE QUE SI HAGA O NO PING, ESTA EXEPCION COMO PODRIAMOS MANEJARLA?, O SEA, EL SCRIPT ME NOTIFICA SI HAY , O NO CONEXION, PERO EN CASO DE QUE ME DE conexion unrechable, NO ME NOTIFICA NADA, QUE PEUDO HACER PARA QUE ME NOTIFQUE ESO TMABIEN
    SALUDOS

  5. Mike Rooney /
    Usando Google Chrome Google Chrome 110.0.0.0 en Windows Windows NT

    I really like the way that you have expressed yourself. There is a lot to be admired from this post. You might want to click onstranger things jacket

  6. Drew Binsky /
    Usando Google Chrome Google Chrome 111.0.0.0 en Windows Windows NT

    I took your advice, which is quite simple to put into practice, and the issue with the ovo game was resolved.

  7. Adilkhatri /
    Usando Google Chrome Google Chrome 114.0.0.0 en Windows Windows NT

    검증된 파워볼사이트 를 찾으신다면 eos파워볼사이트 가 있는 파워볼사이트추천 에서 파워볼 을 즐기시길 바랍니다. 5년 이상 운영된 메이저업체 이며 지금까지 많은분들께 사랑받은 안전한파워볼사이트 입니다. 안전한파워볼사이트

  8. jackyseo1 /
    Usando Google Chrome Google Chrome 114.0.0.0 en Windows Windows NT

    Have you ever wondered if there’s a company that combines spreading love with finding practical solutions? Look no further than The Good Heart! We are on a mission to support charities and non-profits by providing them with free marketing and sponsorships. Imagine the incredible impact this has on these organizations and the causes they champion. But here’s the exciting part – The Good Heart also scouts for products that solve everyday problems, making people’s lives better. It’s truly a company with a heart! Join the conversation and let’s discuss the remarkable work of The Good Heart in our communities and beyond. Charity

  9. jackyseo1 /
    Usando Google Chrome Google Chrome 114.0.0.0 en Windows Windows NT

    At 3E Accounting Singapore, we specialize in company incorporation services with a strong focus on assisting business owners in selecting and appointing nominee directors. As a trusted provider of comprehensive professional services, we cater specifically to the needs of start-ups and small- to medium-sized firms. Alongside our expertise in incorporation, we also offer a breadth of knowledge in accounting, taxation, immigration, and compliance, ensuring that our cost-effective solutions deliver exceptional results that consistently surpass expectations. nominee services Singapore

  10. jackyseo1 /
    Usando Google Chrome Google Chrome 115.0.0.0 en Windows Windows NT

    it’s extremely pleasant and meanful. it’s extremely cool blog. Connecting is exceptionally valuable thing.you have truly helped bunches of individuals who visit blog and give them usefull data. lanai all inclusive resorts

  11. Anonymous /
    Usando Google Chrome Google Chrome 115.0.0.0 en Windows Windows NT

    Captivating post. I Have Been contemplating about this issue, so an obligation of appreciation is all together to post. Completely cool post.It ‘s greatly extraordinarily OK and Useful post.Thanks https://www.maiamina.com/

  12. Adilkhatri /
    Usando Google Chrome Google Chrome 115.0.0.0 en Windows Windows NT

    I am continually hunting on the web down articles that can help me. There is clearly a great deal to think about this. I think you made some great focuses in Features too. Continue working, extraordinary job ! Day trip to Hill of crosses

  13. Adilkhatri /
    Usando Google Chrome Google Chrome 115.0.0.0 en Windows Windows NT

    DispoCars ist dabei, die größte Datenbank für Bodentransportunternehmen der Welt zu werden. Alle Daten, die von lokalen Dienstleistern eingegeben werden, werden auf zahlreiche Arten in der ganzen Welt verteilt, um Reisenden, Reisebüros und Reiseveranstaltern zu helfen, jeden Teil der Welt in Sekunden zu erreichen. dispocars.de

  14. Adilkhatri /
    Usando Google Chrome Google Chrome 116.0.0.0 en Windows Windows NT

    Regarding this matter web page, you’ll see my best data, make sure to investigate this level of detail. maternity photoshoot orange county

Leave a Reply to jackyseo1 Cancle Reply