feed://
Anotaciones
Comentarios

Aquí va otro pequeño gran truco para los amantes de la línea de comandos. Esta anotación va dedicada a aquellos incrédulos que piensan que eso de trabajar en modo texto está pasado de moda y no sirve de nada. Preparaos para entumeceros ante la potencia y enorme flexibilidad que ofrece la shell.

Veamos qué de fácil es averiguar, bajo una terminal de texto, con qué dirección IP estamos conectados a Internet, gracias a wget:

$ wget -O - -q http://www.whatismyip.com | grep -i title | awk ‘{print $4}’
62.42.88.53

¿Mola o no mola? (joder, si decís que no es para asesinaros :\) Pues bueno, se me ha ocurrido crearme una sencilla función en mi

~/.bash_profile
para poder disponer de ella siempre que necesite sacar la IP que tenga actualmente. No tenemos más que editar el pertinente fichero y añadir;

function miIP ()
{
     kIP=`wget -O - -q http://www.whatismyip.com | \
     grep -i title | \
     awk '{print $4}'`
     echo $kIP
}

Guardamos cambios y salimos. Cada vez que iniciemos nuestra cuenta de usuario dispondremos de otra útil orden: miIP. También se puede guardar en otro fichero (miIP por ejemplo) y acoplar a la actual shell que tengamos abierta, con:

source miIP

Bueno, pues eso :-)

Hay 10 comentarios

  1. on 10 Feb 2004 at 10:13 r0sk

    ¡Genial!, si no tenemos privilegios de root (para poder usar ifconfig), es una gran alternativa. Siguiendo el tip anterior (el de grep) y teniendo privilegios de root con un simple:

    # ifconfig | grep “inet addr”
    inet addr:213.234.12.45 Bcast:213.234.12.0 Mask:255.255.255.0
    inet addr:127.0.0.1 Mask:255.0.0.0

    También se sacaría la IP (en color rojo en mi caso) ;)

  2. on 10 Feb 2004 at 13:44 krs

    Muy bueno, sobre todo porque si no me equivoco con la funcion que nos has enseñado nos dice la ip con la que navegamos, que por ejemplo en mi caso (y el de todos los usuarios de adsl en españa) no es la misma que realmente tengo gracias al fantástico (xDDD) proxy-cache de timofonica.
    Por cierto r0sk aunque no seamos root podemos usar ifconfig para mostrar la informacion si ponemos la ruta completa (/sbin/ifconfig), de esa manera con lo que dice r0sk sabemos nuestra ip real y con lo que ebarbeito nos enseña podemos saber con la que navegamos :)

  3. on 10 Feb 2004 at 15:58 ebarbeito
    /sbin/ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -c 6-

    :-)

    krs, es verdad :( no había contado con el proxy-caché de Telefonica. Muy buen apunte.

    Un saludo

  4. on 10 Feb 2004 at 18:22 frank

    dreamweaver MX tiene una funcionalidad parecida y me ha parecido muy util y rapida

  5. on 13 Feb 2004 at 05:14 xento

    Hay va otra manera de hacer lo mismo pero para conexiones sobre otra interfaz (ppp en este caso) ademas comprobamos que la interfaz este en pie y que nuestra ip sea la real segun http://www.whatismyip.com, logicamente antes de pedir los datos comprobamos que la interfaz ppp0 exista, y asi podemos conectar , de lo contrario la variable nos daria error:

      var1=$(ifconfig ppp0 | awk ‘/inet/ { print $2 } ‘ | sed -e s/addr://)

      var2=$(ifconfig | awk ‘/ppp0/ { print $1 } ‘)
      if [ “$var2″ == “ppp0″ ] ; then

    var3=$(wget -O - -q http://www.whatismyip.com | grep -i title | awk ‘{print $4}’)

      if [ “$var1″ == “$var3″ ] ; then

      echo “$var1″

      else

      echo “$var3″

      fi

    else

    echo “ppp off”

    fi

    Podriamos rizar el rizo, y hacer un ping a google por ejemplo (ping -f -c5 google.com), y dependiendo de el resultado

      var4=$(ping -f -c5 google.com | awk ‘/packets/ { print $6 }’)

      if [ “$var4″ == “0%” ] ; then

    ejecutamos la variable que contiene una conexion a internet, y asi nos evitamos no poder averiguar la i.p si existe otra interfaz que nos de salida a internet.

    Ya puestos nos curramos el script un poquito mas, y buscamos la interfaz que sea la de la salida a internet y se la pasamos como variable a var1, y asi nos aseguramos de que nuestra i.p sea la correcta de verdad de las verdades y no hace falta que nos basemos solo en una interfaz,, ufff

    Bueno y ya me callo que si no acabo haciendo aqui una funcion que no viene a cuento :)))

  6. on 13 Feb 2004 at 20:28 7th Sign

    yo hice lo mismo pero solo use grep y cat para obtener la ip,
    he aqui la linea que uso

    #!/bin/bash
    /sbin/ifconfig | grep addr | cut -d : -f 2 | grep Bcast | cut -d ” ” -f 1

    y con eso solo arroja la IP o IPs que tengas en tus interfaces de RED

  7. on 14 Feb 2004 at 15:19 ebarbeito

    Joder, ¡¡vaya comentarios!! xento y 7th Sign, gracias :-)

    xento, has dado en poco espacio muchas ideas de cómo explotar las posibilidades “de esta función” (ya sería un script hecho y derecho, con más de una función jejeje)

    7th Sign, he probado ese ifconfig que comentas

    $ /sbin/ifconfig | grep addr | cut -d : -f 2 | grep Bcast | cut -d " " -f 1
    192.168.0.100

    Y teniendo dos interfaces levantadas (eth0 y lo) me devuelve únicamente la IP para la interfaz eth0. Para sacarlas todas creo que sería:

    $ /sbin/ifconfig | grep "inet addr" | cut -f2 -d:|cut -f1 -d' '
    192.168.0.100
    127.0.0.1

    Un saludo :-)

  8. on 26 Dic 2004 at 17:18 Nol-bits

    Sí no tienes linux o unix sino un güindows y no dispones del grep y todo lo demas para extraer la ip del archivo html aqui hay un servidor que te muestra la IP solita y sin ningun formato.

    http://www.whatismyip.org

    ——————————————————
    Cuando envies correo-e a varios destinatarios colocalos en CCO para que nadie mas se de cuenta de las direcciones de correo.

  9. on 15 Feb 2006 at 15:47 sebastian

    hola, muchas gracias por las sugerencias, muy interesante mas de alguna. aca pondre lo que acabo de hacer gracias a sus ideas. quizas para algunos sea una tontera, pero bueno, me entretubo bastante.
    mi conexion a internet, como la muchos, no ofrece una IP dinamica. y resulta que no apago nunca mi pc por las descargas en torrent frecuentes que hago. por este motivo, me gustaria poder saber siempre que IP es la que tengo para poder acceder a mi pc via ssh.
    ok, entonces hice este script

    #!/bin/bash
    /sbin/ifconfig ppp0 | grep “inet addr” | awk ‘{print $2}’ | cut -c 6- | mail -s “IPmi@correo.com

    for i in `seq 1 10000`;
    do
    IP1=$(/sbin/ifconfig ppp0 | grep “inet addr” | awk ‘{print $2}’ | cut -c 6-)

    sleep 1000

    IP2=$(/sbin/ifconfig ppp0 | grep “inet addr” | awk ‘{print $2}’ | cut -c 6- )

    if [ “$IP1″ != “$IP2″ ]; then
    /sbin/ifconfig ppp0 | grep “inet addr” | awk ‘{print $2}’ | cut -c 6- | mail -s “IPmi@correo.com
    fi

    done

    lo que hace es cuando carga me envia mi ip al correo, y despues empieza a compara las ip desdpues de 1000 segundos, probablemente lo del for no sea lo mejor, ni tampoco nada de elegante, pero sirve para unos 13 dias, asi es que bueno, sirve = no mas.

  10. on 09 Abr 2006 at 18:31 german aracil

    wget -O - -q http://www.whatismyip.com | grep -i title | awk -F’- ‘ ‘{print $2}’ | awk -F’<’ ‘{print $1}’

    Otra variante para quién no le funcione la línea del artículo.

Trackback URI |