¿Cómo encuentro mi dirección IP desde la línea de comandos?

126

Sé que puedes hacer ifconfig | grep inet , pero eso te muestra varias direcciones IPv4. ¿Cómo obtengo el específico para SSHing et al?

    
pregunta JShoe 07.08.2011 - 00:32

6 respuestas

126

Utilice ipconfig getifaddr en1 para conexión inalámbrica o ipconfig getifaddr en0 para ethernet.

    
respondido por el daviesgeek 07.08.2011 - 01:01
79

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

dirección_ip.sh

#!/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
    
respondido por el Brad Parks 30.09.2014 - 19:16
29

Solo escribe curl ifconfig.me en la terminal.

    
respondido por el Kcidkcus 02.09.2014 - 03:46
16

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.

    
respondido por el mike 09.06.2014 - 12:18
15

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"
    
respondido por el thibmaek 30.09.2014 - 20:06
2

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.

    
respondido por el daniel Azuelos 02.09.2014 - 14:45

Lea otras preguntas en las etiquetas