Averigua tu IP externa (pública)

networking
<?php $ip = $_SERVER['REMOTE_ADDR']; echo "Tu dirección IP externa: $ip“; ?>
Esta receta explica formas de conocer la IP pública con la que te estás concectando a Internet

Si utilizas un router o algo del estilo que incorpore un servidor DHCP, la dirección asignada a tu ordenador con toda seguridad será una dirección IP privada Pero a veces, es necesario conocer cuál es la IP pública con la que sales a Internet, con el fin de configurar un cliente DNS dinámico u otro tipo de aplicación específica.

Para conocerla puedes usar alguno de estos métodos:

Shell

lynx -dump http://checkip.dyndns.org/ | grep IP | awk {'print $4'}

$ curl -s checkip.dyndns.org | grep -Eo '[0-9\.]+'

Shell (avisa por mail)

#!/bin/bash
# Requiere los paquetes "mailx" y "lynx"
# Te envía un email cada vez que te cambia la IP pública. Ejecutar en background
 
while true
do
    old_ip="`cat ~/public.ip 2> /dev/null`" 
    new_ip="`lynx -source http://www.whatismyip.com/ | grep '&lt;TITLE>' | awk '{print $4}'`"
 
    if [ "$old_ip" != "$new_ip" ]; then
        echo $new_ip | mail tu@email.com -s "Tu IP ha cambiado"
        echo $new_ip > ~/public.ip
    fi
    sleep 60
done

PHP

<?php
echo "Tu dirección IP externa es: ", $_SERVER['REMOTE_ADDR'];
?>

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

un poco mas

#!/bin/bash
#
# Name:         checkip
# Description:  Script alternative for obtain your real internet ip
# Version:      1.0
# Author:       Jose V Beneyto, <joberui at ei dot upv dot es>
# License:      GNU/GPL (http://www.gnu.org/copyleft/gpl.html)
# Depends on:   netcat,tr,grep
 
#checkdepends: check dependecies
checkdepends() {
        for dep in tr grep netcat
        do
                which $dep >& /dev/null
                if [ $? == 1 ]
                then
                        echo "$dep not found, please install it!" >&2
                        exit 1
                fi
        done
}
#get internet ip
inetip() {
        echo -ne "GET /index.html HTTP/1.0\n\n" | \
                netcat checkip.dyndns.org 80 | \
                tr '>' '\n' | tr '<' '\n' | \
                grep 'Current IP Address:' | sed 's|Current IP Address:|inet ip:|g'
        # with curl (uncomment this line and comment the line below, you need curl as dependency)
        #curl -s http://checkip.dyndns.org/ | tr '>' '\n' | tr '<' '\n' | grep 'Current IP Address:'
}
#get lan ip
lanip() {
        /sbin/ifconfig | grep 'inet addr:192' | \
                tr ' ' '\n' | grep 'addr:192' | \
                sed 's|addr:| lan ip: |g'
}
 
#main
checkdepends
inetip
lanip
 
exit 0
 
# End of File

gracias me ha sido muy util!

gracias
me ha sido muy util!

Excelente!!!

Ilustrosísimos como útiles los ejemplos, era justo lo que andaba buscando.
Muchísimas gracias

Gran valor!