Есть ли способ узнать, как система подключена к интернету через Wi-Fi или локальную сеть?
3 ответа
Вы можете начать с утилиты networksetup
чтобы получить список всех доступных служб:
$~ networksetup -listallnetworkservices
An asterisk (*) denotes that a network service is disabled.
Thunderbolt Ethernet
Display Ethernet
Display FireWire
Wi-Fi
iPhone USB
Bluetooth PAN
Thunderbolt Bridge
Или вы можете перечислить заказ на обслуживание:
$~ networksetup -listnetworkserviceorder
An asterisk (*) denotes that a network service is disabled.
(1) Thunderbolt Ethernet
(Hardware Port: Thunderbolt Ethernet, Device: en5)
(2) Display Ethernet
(Hardware Port: Display Ethernet, Device: en6)
(3) Display FireWire
(Hardware Port: Display FireWire, Device: fw0)
(4) Wi-Fi
(Hardware Port: Wi-Fi, Device: en0)
(5) iPhone USB
(Hardware Port: iPhone USB, Device: en4)
(6) Bluetooth PAN
(Hardware Port: Bluetooth PAN, Device: en3)
(7) Thunderbolt Bridge
(Hardware Port: Thunderbolt Bridge, Device: bridge0)
Затем вы можете запросить каждый сервис, чтобы увидеть, если он подключен / настроен, например,
$~ networksetup -getinfo Wi-Fi
DHCP Configuration
IP address: 10.0.0.120
Subnet mask: 255.255.255.0
Router: 10.0.0.138
Client ID:
IPv6: Automatic
IPv6 IP address: none
IPv6 Router: none
Wi-Fi ID: 6c:40:08:a9:62:50
Попробуйте эту команду:
networksetup -listnetworkserviceorder | grep -C1 $(netstat -nr | grep ^default | grep -o "\s\S\+$")
В основном это состоит из netstat
:
$ netstat -nr | grep ^default
default 192.168.46.1 UGSc 399 0 en0
который дает вам IP-адрес шлюза по default
через который вы подключаетесь к Интернету. Соответствующей частью является последний столбец, в котором указано имя сетевого интерфейса (en0
).
Поскольку OS X использует одно и то же имя интерфейса для WiFi и проводного Ethernet (что отличается для других Unix-систем), его невозможно отличить по имени.
Так что эта дополнительная команда должна дать вам понять, какое это устройство:
$ networksetup -listnetworkserviceorder | grep -C1 en0
(3) Wi-Fi
(Hardware Port: Wi-Fi, Device: en0)
Мне нравится использовать:
networksetup -listallhardwareports | grep -C1 $(route get default | grep interface | awk '{print $2}')
Он проверяет, какой интерфейс в настоящее время используется в качестве маршрута по умолчанию, а затем ищет информацию об оборудовании.