Как программно получить статус подключения сетевых служб OSX? - PullRequest
0 голосов
/ 16 июня 2010

В системных настройках OS X, когда я нажимаю «Сеть», я вижу зеленую точку «Ethernet» и красные точки «AirPort» и «FireWire».Это связано с тем, что я отключил AirPort и FireWire, когда получаю доступ к сетям и Интернету через Ethernet.

Мне нужно программно определить, какие из этих сетевых служб, отображаемых в Системных настройках, имеют зеленые точки, а какие - красные.Для Ethernet и FireWire отображается состояние «Подключен» или «Не подключен», а для AirPort отображается «Вкл.» Или «Выкл.».Возможно, другие сетевые сервисы имеют другие метки состояния.

Я просмотрел все файлы plist в '/ Library / Preferences / SystemConfiguration', в частности, 'Preferences.plist' и 'NetworkInterfaces.plist'.Я могу получить все виды информации там, такие как набор местоположений, порядок сетевых услуг, информация о прокси (что также важно для моей задачи), но я не могу найти, как определить, включена ли данная сетевая служба или нет -эквивалентно отображению зеленой точки.

Я также пытался использовать инфраструктуру конфигурации системы, в частности функцию SCNetworkConnectionGetStatus, но все, что я получаю, это недопустимые состояния подключения.

Кто-нибудь знает, как на самом деле получитьэта информация о состоянии соединения?

Спасибо.

1 Ответ

0 голосов
/ 16 июня 2010

Зеленые и красные точки в панели управления обычно соответствуют выходным данным команды ifconfig в OSX.

Как правило, и она может варьироваться от компьютера к компьютеру, en0 будет Ethernetпорт и en1 аэропорт.(По крайней мере, на всех MacBook Pro, которые я использую)

Похоже, вы можете использовать ifconfig -m для получения информации о поддерживаемых носителях.

$ ifconfig -m en0
en0: flags=8863 mtu 1500
    ether (redacted)
    media: autoselect
    status: inactive
    supported media:
        media autoselect
        media 10baseT/UTP mediaopt half-duplex
        media 10baseT/UTP mediaopt full-duplex
        media 10baseT/UTP mediaopt full-duplex mediaopt hw-loopback
        media 10baseT/UTP mediaopt full-duplex mediaopt flow-control
        media 100baseTX mediaopt half-duplex
        media 100baseTX mediaopt full-duplex
        media 100baseTX mediaopt full-duplex mediaopt hw-loopback
        media 100baseTX mediaopt full-duplex mediaopt flow-control
        media 1000baseT mediaopt full-duplex
        media 1000baseT mediaopt full-duplex mediaopt hw-loopback
        media 1000baseT mediaopt full-duplex mediaopt flow-control
        media none

Просмотр 10xxbaseT обычно является хорошим знакомethernet.

Похоже, беспроводная связь не сообщает ни о каком поддерживаемом носителе.

Страница man для ifconfig содержит массу информации, но могут быть некоторые системные библиотеки для программного доступа к этой информации.Я не знаю, но это должно начать вас.

...