9 votos

¿Cómo puedo obtener la dirección IP local en MacOS para usarla en un script?

Necesito averiguar la dirección IP local del corredor de Github, que utiliza MacOS 11. Necesito esto para mis pruebas de integración.

Lo intenté:

LOCAL_IP=ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
SERVER_URL="http://${LOCAL_IP}:5000"

Sin embargo, esto me dio justo: http://:5000

¿Cuál es el comando correcto para esto?

0 votos

Relacionado apple.stackexchange.com/questions/60160/ , pero las respuestas allí no son fácilmente utilizables en un script.

0 votos

Sé que hay muchas preguntas relacionadas, pero no encuentro ninguna respuesta para una solución basada en el shell script.

0 votos

¿Estos scripts se ejecutan en la misma máquina que el servidor? Si no es así, ¿está el servidor en una máquina fija?

11voto

benwiggy Puntos 8

La dirección IP local se puede obtener con el siguiente comando:

ipconfig getifaddr en0

o en1 dependiendo de su Mac y de su conexión.

0 votos

No me funciona: /Users/runner/work/_temp/f51fbf9d-2251-420a-ad21-c16451b2e10‌​7.sh: line 4: getifaddr: command not found

1 votos

@DarkMath El comando es ipconfig getifaddr en0 .

0 votos

@benwiggy Sí, lo he intentado. Pero el corredor de Github no conoce el comando getifaddr como puedes ver en el mensaje de error de arriba.

8voto

LOCAL_IP=ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'

establece la variable LOCAL_IP a ifconfig para ejecutar un comando vacío, y envía la salida vacía de ese comando vacío a la tubería construida de | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}' . Así que LOCAL_IP nunca se fija después.

Lo que probablemente quieras ejecutar es

LOCAL_IP=$(ifconfig | grep 'inet ' | grep -Fv 127.0.0.1 | awk '{print $2}')

que puede simplificarse a

LOCAL_IP=$(ifconfig | awk '/inet /&&!/127.0.0.1/{print $2})

Lamentablemente, esto devolverá dos filas en los Macs que están conectados tanto por Ethernet como por WLAN. Así que probablemente sea más seguro utilizar

LOCAL_IP=$(ifconfig | awk '/inet /&&!/127.0.0.1/{print $2;exit})

que elegirá la primera interfaz de red/dirección IP encontrada.

1 votos

grep … | awk … puede simplificarse aún más: | awk '/inet /&&!/127.0.0.1/{print $2;exit}'

0 votos

@grg Duh, correcto.

2voto

wch1zpink Puntos 11

He aquí otra opción que puede serle útil.

Este comando creará una variable con la dirección IP local.

LOCAL_IP=$(osascript -e "IPv4 address of (system info)")

Este comando devolverá la dirección IP local almacenada en $LOCAL_IP

echo $LOCAL_IP

1 votos

Esto es bueno, no tener que preocuparse por el Nombre de Dispositivo BSD del adaptador de red. +1

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X