Respuestas:
Usar ipconfig getifaddr en1
para conexión inalámbrica o ipconfig getifaddr en0
para ethernet.
Actualización :
ipconfig getifaddr en0
es el predeterminado para la interfaz wifi.
ifconfig
muestra todas las interfaces y sus IPs
curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
Lo siguiente funciona para mí en 10.8 y en 10.10 Yosemite.
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
Si encuentra que lo anterior le da más de una respuesta, guarde lo siguiente en un script y ejecútelo
#!/usr/bin/env bash
dumpIpForInterface()
{
IT=$(ifconfig "$1")
if [[ "$IT" != *"status: active"* ]]; then
return
fi
if [[ "$IT" != *" broadcast "* ]]; then
return
fi
echo "$IT" | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'
}
main()
{
# snagged from here: https://superuser.com/a/627581/38941
DEFAULT_ROUTE=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
if [ -n "$DEFAULT_ROUTE" ]; then
dumpIpForInterface "$DEFAULT_ROUTE"
else
for i in $(ifconfig -s | awk '{print $1}' | awk '{if(NR>1)print}')
do
if [[ $i != *"vboxnet"* ]]; then
dumpIpForInterface "$i"
fi
done
fi
}
main
Solo escribe curl ifconfig.me
en la terminal.
ipconfig getifaddr en0
es para IP local.
Puedes hacer lo siguiente:
Escriba ifconfig
o ifconfig -a
. Este comando le muestra la lista de interfaces junto con sus direcciones IP y MAC (la última solo si corresponde). También puede escribir ifconfig en0
o solo ifconfig en1
para la configuración de una interfaz en particular (como alguien dijo en sus respuestas, en0 es típicamente la Ethernet cableada mientras que en1 es la interfaz WiFi).
Como alternativa, netstat -i
enumerará todas las interfaces y le mostrará las direcciones IP que ha asignado a cada una de ellas.
Normalmente, cuando tiene un demonio SSH ejecutándose en una caja, escuchará en todas las interfaces disponibles, es decir. puede usar cualquier dirección IP que esté configurada en su máquina para conectarse a esa máquina a través de SSH (esto, obviamente, sujeto a las reglas de Firewall). Si busca lo que el sistema operativo llama una interfaz primaria y una dirección IP primaria, puede usar el scutil
comando de esta manera:
MacBook:~ scutil
> show State:/Network/Global/IPv4
<dictionary> {
PrimaryInterface : en0
PrimaryService : C0550F84-5C07-484F-8D62-C8B90DC977D8
Router : 10.103.4.1
}
> show State:/Network/Interface/en0/IPv4
<dictionary> {
Addresses : <array> {
0 : 10.103.4.234
}
BroadcastAddresses : <array> {
0 : 10.103.4.255
}
SubnetMasks : <array> {
0 : 255.255.255.0
}
}
Tenga en cuenta que lo anterior, aunque es un comando de línea de comandos, también es interactivo (por lo que debe ejecutar scutil
y luego ingresar sus propios comandos). El primer show
comando le indica el nombre de la interfaz principal para el sistema operativo (es decir, esta será la que figura en la parte superior de la lista en la ventana Preferencias del sistema / Preferencias de red), así como la dirección IP de su enrutador predeterminado. El segundo show
comando toma State:/Network/Interface/<ifname>/IPv4
argumento (en este caso en0
) y le da las direcciones IP asignadas. Está buscando la dirección en la matriz de Direcciones, las otras dos entradas son direcciones de difusión y las máscaras de red.
Espero que ayude, pero si algo no está claro, hágamelo saber.
echo "show State:/Network/Interface/$(echo 'show State:/Network/Global/IPv4' | scutil | grep 'PrimaryInterface ' | sed 's/ PrimaryInterface : //')/IPv4" | scutil | pcregrep -Mo1 " Addresses : <array> {\n 0 : ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})"
Para obtener la dirección IP de su computadora frente a Internet, aquí hay una receta funcional:
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
Debería funcionar incluso cuando tiene varias interfaces activas, incluso cuando tiene interfaces que no sabe cuál es realmente la puerta de enlace predeterminada.
192.168.0.*)
, no la externa expuesta a Internet.
netstat -nr | grep default
?
Solo para el registro, puede hacer un script bash con el siguiente contenido que le proporciona su dirección IP externa
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wget
no forma parte de macOS y debe instalarse desde una fuente que no sea de Apple.
curl -s http://ipecho.net/plain; echo