¿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 redip route show | grep -i 'default via'| awk '{print $3 }'
salida: 192.168.0.1
para 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' ' -f2
la 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 list
el comando (sí, aún confiando en el administrador de red). nmcli
es la versión de línea de comandos del administrador de red. Podrías correr nmcli dev list | grep -i routers
o 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 sed
solució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 default
debería ser suficiente. Aunque puede dar más de uno dependiendo de sus interfaces de red.