Как я могу программно получить состояние подключения сетевых услуг OSX?
-
27-09-2019 - |
Вопрос
В настройках системы OS X, когда я нажимаю на «сеть», я вижу зеленую точку «Ethernet», а красные точки «Аэропорт» и «Firewire». Это потому, что я выключил аэропорт и Firewire, как и доступа к сетям и интернету через Ethernet.
Мне нужно программно определить, какая из этих сетевых служб, отображаемых в системных предпочтениях, имеет зеленые точки, и которые имеют красные точки. Для Ethernet и Firewire отображаемый статус «подключен» или «не подключен», а для аэропорта отображаемый статус «ON» или «OFF». Возможно, другие сетевые услуги имеют другие метки статуса.
Я выбрал все файлы Plist в «/ Библиотеке / настройки / системной обработке», в частности «предпочтения. Пожалуйста» и «NetworkInterfaces.plist». Я могу получить все виды информации там, например, набор местоположений, порядок сетевого обслуживания, информацию о прокси (которая также важно для моей задачи), но я не могу найти, как определить, включена ли данная сетевая служба - эквивалентно иметь отображаемую зеленую точку.
Я также попробовал использовать структуру конфигурации системы, в частности функцию SCNETWORKCONNECTECTSTSTATSTATSTATATATSTATUS, но все, что я получаю, являются недействительными состояния соединения.
Кто-нибудь знает, как на самом деле получить эту информацию о состоянии соединения?
Спасибо.
Решение
Зеленые и красные точки в контрольной панели, как правило, коррелируют до выхода ifconfig
Команда на OSX.
Как правило, и он может варьироваться от компьютера к компьютеру, en0
будет порт Ethernet и en1
аэропорт. (По крайней мере, на всех MacBook Pros I использую)
Похоже, вы можете использовать ifconfig -m, чтобы получить информацию о поддерживаемых носителях.
$ ifconfig -m en0 en0: флаги = 8863 mtu 1500 эфир = 8863 mtu 1500 эфир (отредактированные) носитель: autoSelect Статус: неактивные Поддерживаемые носители: носитель AutoSelect Media 10BaseT / UTP MediaOPT полудуплексные носители 10BaseT / UTP MediaOPT Full-Duplex Media 10BaseT / UTP MediaOPT Дуплекс MediaoPT HW-Loopback Media 10BaseT / UTP MediaOPT Full-Duplex MediaOPT Media-Control Media 100Basetx MediaOPT полудуплекс носитель 100basetx MediaOPT полнодуплекс носитель 100basetx MediaOPT полноду дуплексный MediaOPT HW-обратный носитель MediaOPT MediaOPT MediaOPT Full-Duplex MediaOPT 1000baset MediaOPT Full-duplex Media 1000Baset MediaOPT Full-Duplex MediaOPT HW-Loopback Media 1000Baset MediaOpt Full-Duplex MediaOPT MediaOPT Media Control Media None
Увидев 10xxBaset, как правило, хороший знак это Ethernet.
Кажется, беспроводной не сообщает о любых поддерживаемых средах.
Страница человека для IFCONFIG имеет тонну информации, но могут быть некоторые системные библиотеки для программных доступа к этой информации, о которой я не знаю, но это должно вас начать.