¿Cómo mostrar (solo) la dirección IP de mi enrutador?

¿Cómo mostrar (solo) la dirección IP de mi enrutador?

¿Qué comando puedo ejecutar para obtener solo la dirección IP de mi enrutador?

Con este comando debería tener sólo la IP de mi router y no, por ejemplo, toda la tabla de enrutamiento (como cuando ejecuto route -n).

Respuesta1

Frases ingeniosas:

  • nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
  • nm-tool | grep -i gateway | awk '{print $2}
  • netstat -nr | awk '$1 == "0.0.0.0"{print$2}'
  • arp -n | awk '{print $1}'Nota: funciona sólo si su máquina es la única en la red
  • ip route show | grep -i 'default via'| awk '{print $3 }'

salida: 192.168.0.1para mi

NOTA:

Para 15.04 y posteriores, no hay nm-tool, así que use nmcli dev show <IFACE>. Por ejemplo,

$ nmcli dev show wlan7 | grep GATEWAY                                                                                    
IP4.GATEWAY:                            192.168.0.1
IP6.GATEWAY:                            

Ediciones e información adicional

Como puede ver al examinar el comando, tomamos la salida de nm-tool(que, tenga en cuenta, toma información de NetworkManager), buscamos la línea que contiene word gateway, imprimimos la información con eco (separada por espacios) y luego cortamos solo el segundo elemento de ese todo. producción. Tenga en cuenta que si tiene dos o más conexiones allí, es posible que necesite quitar xargs echo | cut -d' ' -f2la parte superior y reemplazarla con awk '{print $2}'; en otras palabras, toda la línea se vería así nm-tool | grep -i gateway | awk '{print $2}'. Alternativamente, podría haber utilizado nm-tool | grep -oP '(?i)gateway:\s*\K\S+'lo propuesto por Avinash Raj en los comentarios. Como puede ver, no se hace nada especial aquí, y toda la prueba aquí es simplemente un ejercicio de uso de herramientas de edición de salida como cut, awk y grep.

Otro método para obtener la información de la puerta de enlace es mediante nmcli dev listel comando (sí, aún confiando en el administrador de red). nmclies la versión de línea de comandos del administrador de red. Podrías correr nmcli dev list | grep -i routerso podrías correr nmcli dev list | grep -i 'gw ='. Nuevamente, puede ejercitar el corte de toda la demás información excepto la dirección IP deseada, si así lo desea.

Dado que en la pregunta original la única especificación era imprimir solo la puerta de enlace predeterminada, aquí confío en la salida de nm-tool. NetworkManager viene con Ubuntu de forma predeterminada, esta es la forma estándar de administrar las conexiones de red de Ubuntu. Si usa otra cosa, como wicd o se conecta a través de wpa_cli, nm-tool no le proporcionará una respuesta. En tal caso, es posible que las respuestas de otras personas a continuación le resulten más útiles.

Una opción más neutral en cuanto a distribución y configuración sería usar netstat -n, que utiliza la tabla de enrutamiento del kernel, similar a route -n. Su resultado es el siguiente, nada sorprendente.

  Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 wlan0
192.168.0.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0

Y esta es la forma de recortar la información deseada:netstat -nr | awk '$1 == "0.0.0.0"{print$2}'

Otro, también neutral:arp -n | awk '{print $1}'

Respuesta2

Puedes encontrarlo de muchas maneras.

ip route show default

Una mejor pregunta: ¿qué o cómo desea darle forma al resultado?

ip route show | awk '/default/ {print $3}'

tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2}' | uniq

De los comentarios -(gracias Avinash Raj 0

tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'

Respuesta3

Como suele utilizar route -n, puede probar esta sedsolución junto con route -n:

route -n | sed -nr 's/(0\.0\.0\.0) +([^ ]+) +\1.*/\2/p' 

Aquí hay una prueba:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.0.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0

$ route -n | sed -nr 's/(0\.0\.0\.0) +([^ ]+) +\1.*/\2/p' 
192.168.1.1

Otra forma sería utilizar grep:

$ route -n | tr -s ' ' | grep -Po "(?<=0\.0\.0\.0 )[^ ]+(?= 0\.0\.0\.0)"
192.168.1.1

Como @AvinashRaj ha señalado, esto se puede hacer usando solo grep(no es necesario apretar los espacios usando tr):

route -n | grep -Po "0\.0\.0\.0\s*\K\S+(?=\s*0\.0\.0\.0)"
192.168.1.1

Respuesta4

Si tiene acceso a un navegador web en el sistema, puede ir ahttp://whatsmyrouterip.com/y debería poder encontrar su IP sin ningún comando.

De lo contrario, simplemente abrir el terminal y hacer un ip route | grep defaultdebería ser suficiente. Aunque puede dar más de uno dependiendo de sus interfaces de red.

información relacionada