1

Есть ли способ узнать, как система подключена к интернету через Wi-Fi или локальную сеть?

3 ответа3

1

Вы можете начать с утилиты 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
0

Попробуйте эту команду:

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)
0

Мне нравится использовать:

networksetup -listallhardwareports | grep -C1 $(route get default | grep interface | awk '{print $2}')

Он проверяет, какой интерфейс в настоящее время используется в качестве маршрута по умолчанию, а затем ищет информацию об оборудовании.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .