Как я могу программно получить состояние подключения сетевых услуг OSX?

StackOverflow https://stackoverflow.com/questions/3055419

  •  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 имеет тонну информации, но могут быть некоторые системные библиотеки для программных доступа к этой информации, о которой я не знаю, но это должно вас начать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top