En su pregunta sé que utilizó networksetup -listnetworkserviceorder
sin embargo yo usaría networksetup -listallhardwareports
ya que es más fácil analizar la salida utilizando awk
por sí mismo, con un mínimo de codificación para evitar múltiples tubos utilizando otros comandos como se ofrece en la otra respuesta y debería ser lo suficientemente robusto como para producir una salida consistente hasta que Apple cambie el formato de salida de networksetup -listallhardwareports
si es que alguna vez lo hacen.
Como ejemplo en mi sistema, networksetup -listallhardwareports
muestra lo siguiente:
$ networksetup -listallhardwareports
Hardware Port: Bluetooth DUN
Device: Bluetooth-Modem
Ethernet Address: N/A
Hardware Port: Display Ethernet
Device: en3
Ethernet Address: xx:xx:xx:xx:xx:xx
Hardware Port: Display FireWire
Device: fw0
Ethernet Address: xx:xx:xx:xx:xx:xx
Hardware Port: Wi-Fi
Device: en0
Ethernet Address: xx:xx:xx:xx:xx:xx
Hardware Port: Bluetooth PAN
Device: en2
Ethernet Address: N/A
VLAN Configurations
===================
$
Mirando las líneas relevantes de salida:
Hardware Port: Wi-Fi
Device: en0
La forma más fácil de conseguir en0
en este ejemplo es:
networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}'
Se puede asignar a una variable:
wifiDevice="$(networksetup -listallhardwareports | awk '/Wi-Fi/{getline; print $2}')"
A continuación, puede utilizar $wifiDevice
más adelante en el script para representar en0
en este ejemplo.
Obviamente en su sistema, basado en la salida en su pregunta, $wifiDevice
sería: en1
Si desea utilizar networksetup -listnetworkserviceorder
puede utilizar awk
por sí mismo, de esta manera:
networksetup -listnetworkserviceorder | awk '{gsub(/\)/, "")}/Wi-Fi, Device/{print $5}'
Sin embargo, yo utilizaría mi primer ejemplo en lugar de este.
Yo también evitaría utilizar system_profiler
en este caso, ya que la salida tarda bastante más en generarse que cuando se utiliza networksetup
.