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.