En tu pregunta, sé que usaste networksetup -listnetworkserviceorder
; sin embargo, usaría networksetup -listallhardwareports
, ya que es más fácil analizar la salida usando awk
, por sí mismo, con un mínimo de codificación para evitar múltiples pipe usa varios otros comandos como se ofrecen en la otra respuesta y debe ser lo suficientemente robusto como para producir una salida consistente hasta que Apple cambie el formato de salida de networksetup -listallhardwareports
, si 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 obtener 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}')"
Luego, puede usar $wifiDevice
más adelante en el script para representar en0
, en este ejemplo.
Obviamente en tu sistema, según el resultado de tu pregunta, $wifiDevice
sería: en1
Si desea usar networksetup -listnetworkserviceorder
, entonces puede usar awk
, de esta manera:
networksetup -listnetworkserviceorder | awk '{gsub(/\)/, "")}/Wi-Fi, Device/{print $5}'
Sin embargo, usaría mi primer ejemplo sobre esto.
También me mantendría alejado de usar system_profiler
en este caso, ya que toma mucho más tiempo para que se genere la salida que cuando se usa networksetup
.