Puede haber varias formas diferentes de lograr lo que estás pidiendo, sin embargo, solo lanzaré esto por ahí.
Tengo un MacBook Pro que no tiene un puerto Ethernet incorporado, así que en mis ejemplos usaré Puerto de hardware: Wi-Fi , ya que probé esto en los dos ejemplos a continuación y funcionó, sin embargo, puede cambiarlo a Puerto de hardware: Ethernet si eso es lo que muestra la salida de
networksetup -listallhardwareports para usted.
Si solo desea enviar la dirección IP del dispositivo de destino a stdout , use el siguiente ejemplo:
$ ipconfig getifaddr $(networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/{getline; print $2}')
$ 192.168.1.100
Si desea asignarlo a una variable en un script , use el siguiente ejemplo:
ipAddress="$(ipconfig getifaddr $(networksetup -listallhardwareports | awk '/Hardware Port: Wi-Fi/{getline; print $2}'))"
Explicación:
La salida relevante de networksetup -listallhardwareports para mi sistema es:
Hardware Port: Wi-Fi
Device: en0
Ethernet Address: 28:cf:e3:10:a4:cd
(Nota: esa no es mi dirección MAC real)
Uso de la sustitución del comando $(...) para tener algo que pasar a ipconfig getifaddr <args> Determino el nombre del dispositivo del puerto de hardware con la salida de networksetup -listallhardwareports y la tubería | a través de awk que busca Hardware Port: Wi-Fi y usa la función get line , que lee la siguiente línea después de match y se pasa a print $2 , que en esencia imprime la segunda parte de la línea que sigue a la match , que en el caso es en0 y que se pasa a ipconfig getifaddr como su argumento en el primer ejemplo, por ejemplo, ipconfig getifaddr en0 . La salida de la cual es la dirección IP.
En el segundo ejemplo, se usa una segunda sustitución de comando $(...) alrededor de la línea de comando compleja utilizada para el ejemplo stdout para asignarla a la variable ipAddress cuando se usa en un script .
Nota: esto realmente debe ser un ejemplo, ya que no lo he codificado para tener en cuenta que el dispositivo está apagado. En otras palabras, si el dispositivo no tiene una dirección IP, no habrá salida para stdout y no se asignará nada a la variable ipAddress en el script . Aunque en el script se puede codificar para probar si la variable ipAddress está vacía y actúa en consecuencia.