macos - redes - mac obtener ip
Cómo obtener una puerta de enlace predeterminada en Mac OSX (4)
La utilidad grep no es necesaria. Awk puede hacerlo todo:
netstat -rn | awk ''/default/ {print $2}''
192.168.128.1
Tenga en cuenta que si tiene en ejecución algo como Parallels (o una VPN, o ambas), puede ver dos o más entradas de enrutamiento predeterminadas; será cierto si también usa la sugerencia ''grep'' anterior.
netstat -rn | awk ''/default/ {print $2}''
192.168.128.1
link#12
y
netstat -rn | awk ''/default/ {print $2}''
utun1
192.168.128.1
link#12
Para establecer una variable (_default) para su uso posterior (suponiendo solo una entrada para ''default'') .....
_default=$( netstat -rn inet | awk ''/default/ {print $2}'' ) # I prefer $( ... ) over back-ticks
En el caso de múltiples rutas predeterminadas, use:
netstat -rn | awk ''/default/ {if ( index($6, "en") > 0 ){print $2} }''
192.168.128.1
Estos ejemplos se probaron en Mavericks Terminal.app y son específicos solo de OSX. Por ejemplo, otras versiones de * nix frecuentemente usan ''eth'' para conexiones ethernet / inalámbricas, no ''en''. Esto también solo se prueba con ksh. Otros shells pueden necesitar una sintaxis ligeramente diferente.
Necesito recuperar la puerta de enlace predeterminada en una máquina Mac. Sé que en Linux route -n dará un resultado del cual puedo recuperar fácilmente esta información. Sin embargo, esto no funciona en Mac OSX (Snow Leopard).
También probé netstat -nr | grep ''default''
netstat -nr | grep ''default''
, pero esperaba una salida más limpia como la que produce la route -n
en Linux / Unix. netstat -nr
enumera todas las interfaces y la puerta de enlace predeterminada para ellas.
Cualquier tipo de sugerencia o sugerencia en la dirección correcta será apreciada.
Para obtener la lista de direcciones IP asociadas, puede usar el comando netstat
netstat -rn
Esto proporciona una larga lista de direcciones IP y no es fácil encontrar el campo requerido. El resultado de la muestra es el siguiente:
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.195.1 UGSc 17 0 en2
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 1 254107 lo0
169.254 link#7 UCS 0 0 en2
192.168.195 link#7 UCS 3 0 en2
192.168.195.1 0:27:22:67:35:ee UHLWIi 22 397 en2 1193
192.168.195.5 127.0.0.1 UHS 0 0 lo0
More result is truncated.......
La dirección IP de la puerta de enlace está en la primera línea; uno con el valor predeterminado en su primera columna.
Para mostrar solo las líneas de resultado seleccionadas, podemos usar el comando grep junto con netstat
netstat -rn | grep ''default''
Este comando filtra y muestra esas líneas de resultado que tienen por defecto. En este caso, puede ver resultados como los siguientes:
default 192.168.195.1 UGSc 14 0 en2
Si está interesado en encontrar solo la dirección IP de la puerta de enlace y nada más, puede filtrar el resultado usando awk . El comando awk coincide con el patrón en el resultado de entrada y muestra el resultado. Esto puede ser útil cuando usa su resultado directamente en algún programa o trabajo por lotes.
netstat -rn | grep ''default'' | awk ''{print $2}''
El comando awk dice que coincida e imprima la segunda columna del resultado en el texto. El resultado final se ve así:
192.168.195.1
En este caso, netstat muestra todos los resultados, grep solo selecciona la línea con ''default'' en él, y awk coincide aún más con el patrón para mostrar la segunda columna en el texto.
De manera similar, puede usar la ruta -n obtener el comando predeterminado para obtener el resultado requerido. El comando completo es
route -n get default | grep ''gateway'' | awk ''{print $2}''
Estos comandos funcionan bien tanto en Linux como en sistemas Unix y MAC OS.
Puedes probar con:
route -n get default
No es lo mismo que la route -n
GNU / Linux route -n
(o incluso el ip route show
), pero es útil para verificar la información de ruta predeterminada. Además, puede verificar la ruta que tomarán los paquetes a un host en particular. P.ej
route -n get www.yahoo.com
El resultado sería similar a:
route to: 98.137.149.56
destination: default
mask: 128.0.0.0
gateway: 5.5.0.1
interface: tun0
flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 0 0 0 1500 0
netstat -nr
mi humilde netstat -nr
es lo que necesita. Incluso la aplicación de utilidad de red de MacOSX (*) usa la salida de netstat para mostrar la información de enrutamiento.
Espero que esto ayude :)
(*) Puede iniciar la utilidad de red con open /Applications/Utilities/Network/ Utility.app
Yo usaría algo en esta línea ...
netstat -rn | grep "default" | awk ''{print $2}''