Si lo compruebo con google, puedo ver mi IP pública. ¿Hay algo en la línea de comandos de Ubuntu que me dé la misma respuesta?
Si no está detrás de un router, puede averiguarlo utilizando ifconfig
.
Si estás detrás de un router, entonces tu ordenador no sabrá la dirección IP pública ya que el router hace una traducción de direcciones de red. Puedes preguntar a algún sitio web cuál es tu dirección IP pública usando curl
o wget
y extraer la información que necesitas de él:
curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
o más corto
curl https://ipinfo.io/ip
Para encontrar la IP externa, puede utilizar servicios externos basados en la web, o utilizar métodos basados en el sistema. El más fácil es usar el servicio externo, también las soluciones basadas en ifconfig
funcionarán en su sistema sólo si no está detrás de una NAT
. los dos métodos se han discutido a continuación en detalle.
La forma más fácil es utilizar un servicio externo a través de un navegador de línea de comandos o una herramienta de descarga. Como wget
está disponible por defecto en Ubuntu, podemos utilizarlo.
Para encontrar su ip, use
$ wget -qO- https://ipecho.net/plain ; echo
Cortesía:
También puedes usar lynx
(browser) o curl
en lugar de wget
con pequeñas variaciones al comando anterior, para encontrar tu ip externa.
Usando curl
para encontrar la ip:
$ curl https://ipecho.net/plain
Para una salida mejor formateada utilice:
$ curl https://ipecho.net/plain ; echo
dig
con OpenDNS
como resolvedor:Las otras respuestas aquí van todas sobre HTTP a un servidor remoto. Algunas de ellas Algunas requieren el análisis de la salida, o dependen de la cabecera User-Agent para que el servidor responda en texto plano. También cambian bastante cambian con frecuencia (bajan, cambian de nombre, ponen anuncios, pueden cambiar formato de salida, etc.).
- El protocolo de respuesta DNS está estandarizado (el formato seguirá siendo compatible).
- Históricamente los servicios DNS (OpenDNS, Google Public DNS, ..) tienden a sobrevivir mucho más tiempo y son más estables, escalables y generalmente cuidados que cualquier nuevo servicio HTTP de whatismyip.com que esté de moda hoy en día.
- (para aquellos geeks que se preocupan por la micro-optimización), este método debería ser intrínsecamente más rápido (aunque sólo sea por unos pocos micro segundos).
Usando dig con OpenDNS como resolver:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
Copiado de: https://unix.stackexchange.com/a/81699/14497
Escriba lo siguiente en su terminal:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
En lo anterior, sustituye <nombre_de_interfaz>
por el nombre de tu interfaz real, por ejemplo: eth0
, eth1
, pp0
, etc...
Ejemplo de uso:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
Escriba lo siguiente en su terminal (esto obtiene el nombre y la dirección ip de cada interfaz de red en su sistema):
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
Ejemplo de uso:
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444
N.B: Los resultados son indicativos y no reales.
Cortesía: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
ACTUALIZACIÓN
LANG=c
a los usos basados en ifconfig
, para que siempre dé la salida en inglés, independientemente de la configuración regional.