2010-06-16 68 views
0

在OS X系統偏好設置中,當我點擊'網絡'時,我看到'以太網'的綠點,'AirPort'和'FireWire'的紅點。這是因爲我關閉了AirPort和FireWire,因爲我通過以太網訪問網絡和Internet。如何以編程方式獲取OSX網絡服務的連接狀態?

我需要以編程方式確定系統偏好設置中顯示的這些網絡服務中哪些具有綠色點,哪些具有紅色點。對於以太網和FireWire,顯示的狀態爲「連接」或「未連接」,對於AirPort,顯示的狀態爲「開」或「關」。其他網絡服務可能還有其他狀態標籤。

我已經選取了'/ Library/Preferences/SystemConfiguration'中的所有plist文件,特別是'preferences.plist'和'NetworkInterfaces.plist'。我可以在那裏獲得各種信息,例如位置集,網絡服務訂單,代理信息(這對我的任務也很重要),但是我找不到如何確定給定的網絡服務是打開還是關閉 - 相當於顯示綠色圓點。

我也試過使用系統配置框架,特別是SCNetworkConnectionGetStatus函數,但我得到的都是無效的連接狀態。

有誰知道如何實際檢索此連接狀態信息?

謝謝。

回答

0

控制面板中的綠色和紅色點通常與OSX上的ifconfig命令的輸出相關。

通常它可以從電腦到電腦不同,en0將是以太網端口和en1機場。 (至少在我使用的所有Macbook優點)

它看起來像你可以使用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通常是一個好兆頭,它是以太網。

無線似乎沒有報告任何支持的媒體。

ifconfig的手冊頁有很多信息,但可能有一些系統庫用於以編程方式訪問我不知道的信息,但這應該讓您開始。