Mac OS 终端命令 如何区分wlan 和以太网地址?

Mac OS terminal command How to differentiate wlan from ethernet address?

我正在制作一个 mac os 应用程序。我正在尝试获取以太网和 wlan 地址。我知道这些是 en0en1 地址,但根据设备的不同,en0 可以是以太网或 wlan。有办法知道是哪一个吗?

到目前为止,我正在使用它获取两个地址但不区分它们:

let task=Process.init()
task.launchPath="/sbin/ifconfig"
task.arguments=["en0"]    //or en1

let pipe=Pipe()
task.standardOutput=pipe
task.launch()

let data=pipe.fileHandleForReading.readDataToEndOfFile()
guard let stringResult=String(data: data, encoding: String.Encoding.utf8) as NSString? else{wlanFailed();return}
print("en0:", stringResult)

编辑

所以现在我正在尝试 运行 这个命令 networksetup -listnetworkserviceorder 可以在我的终端上运行。

但我不知道如何通过我的 Mac 应用让它发挥作用。例如,用这个:

let task=Process.init()
task.launchPath="/sbin/networksetup"
task.arguments=["-listnetworkserviceorder"]

我得到:

launch path not accessible

这些是一些有助于将接口与硬件名称匹配的命令:

  • networksetup -listallhardwareports

  • networksetup -listnetworkserviceorder

  • system_profiler SPNetworkDataType

  • scutil <<< "list" | grep -i airport

感谢@artem-dorodovskiy 和@nbari 给我命令行。

多亏了这个SOF answer,我找到了写法。

let task=Process.init()
task.launchPath="/usr/bin/env"
task.arguments=["networksetup", "-listnetworkserviceorder"]