Sé que puedes hacer ifconfig | grep inet
, pero eso te muestra varias direcciones IPv4. ¿Cómo obtengo el específico para SSHing et al?
Sé que puedes hacer ifconfig | grep inet
, pero eso te muestra varias direcciones IPv4. ¿Cómo obtengo el específico para SSHing et al?
Utilice ipconfig getifaddr en1
para conexión inalámbrica o ipconfig getifaddr en0
para ethernet.
Lo siguiente me funciona en 10.8 y en 10.10 Yosemite.
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
Si encuentra lo anterior le da más de una respuesta, guarde lo siguiente en un script y ejecútelo en su lugar
#!/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.
Puedes hacer lo siguiente:
Escriba ifconfig
o ifconfig -a
. Este comando le muestra la lista de interfaces junto con sus direcciones IP y MAC (esta última solo si corresponde). También puede escribir ifconfig en0
o ifconfig en1
solo para la configuración de una interfaz en particular (como alguien dijo en sus respuestas, en0 suele ser la red 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 un cuadro, escuchará en todas las interfaces disponibles, es decir. puede utilizar 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 del Firewall). Si busca lo que el sistema operativo llama una interfaz principal y una dirección IP primaria, puede usar el comando scutil
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 tanto, ejecuta scutil
y luego ingresa sus propios comandos). El primer comando show
le dice el nombre de la interfaz principal para el sistema operativo (es decir, este será el que está 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 comando show
toma el argumento State:/Network/Interface/<ifname>/IPv4
(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 transmisión y las máscaras de red.
Espero que ayude, pero si algo no está claro, hágamelo saber.
Lo tengo configurado en un archivo de puntos .aliases para búsquedas frecuentes en ip:
alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
alias localip="ipconfig getifaddr en0"
Para obtener la dirección IP de su computadora frente a Internet, aquí hay un recibo de trabajo:
if='netstat -nr | awk '{ if ($1 ~/default/) { print $6} }''
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
Debería funcionar incluso cuando tienes múltiples interfaces activas, incluso cuando tienes interfaces, no sabes cuál es en realidad el puerta de enlace predeterminada.