كيف يمكنني الحصول على حالة اتصال خدمات شبكة OSX بشكل برمجي؟
-
27-09-2019 - |
سؤال
في تفضيلات نظام OS X ، عندما أنقر على "الشبكة" أرى نقطة خضراء بواسطة "Ethernet" ، ونقاط حمراء بواسطة "المطار" و "Firewire". هذا لأنني أطفأت من المطار و Firewire ، حيث يمكنني الوصول إلى الشبكات والإنترنت عبر Ethernet.
أحتاج إلى تحديد برمجيًا أي من خدمات الشبكة المعروضة في تفضيلات النظام لها نقاط خضراء والتي لها نقاط حمراء. بالنسبة إلى Ethernet و Firewire ، تكون الحالة المعروضة "متصلة" أو "غير متصلة" ، وبالنسبة للمطار ، تكون الحالة المعروضة "ON" أو "OFF". ربما تحتوي خدمات الشبكة الأخرى على ملصقات حالة أخرى.
لقد اخترت جميع ملفات PLIST في "/Library/Temperences/SystemConfiguration" ، وخاصة "التفضيلات. يمكنني الحصول على جميع أنواع المعلومات هناك ، مثل مجموعة الموقع ، وطلب خدمة الشبكة ، ومعلومات الوكيل (وهو أمر مهم أيضًا لمهمتي) ، لكن لا يمكنني العثور على كيفية تحديد ما إذا كانت خدمة شبكة معينة قيد التشغيل أو إيقافها- أي ما يعادل عرض النقطة الخضراء.
لقد حاولت أيضًا استخدام إطار تكوين النظام ، وتحديداً وظيفة SCNetWorkConnectionGetStatus ، ولكن كل ما أحصل عليه هو حالات اتصال غير صالحة.
هل يعرف أي شخص كيفية استرداد معلومات حالة الاتصال هذه بالفعل؟
شكرًا.
المحلول
ترتبط النقاط الخضراء والأحمر في جهاز التحكم بشكل عام بإخراج ifconfig
الأمر على OSX.
عادة ويمكن أن تختلف من الكمبيوتر إلى الكمبيوتر ، 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 علامة جيدة على أنها إيثرنت.
لا يبدو أن اللاسلكي يبلغ عن أي وسائط مدعومة.
تحتوي صفحة MAN الخاصة بـ ifconfig على الكثير من المعلومات ، لكن قد يكون هناك بعض مكتبات النظام للوصول إلى هذه المعلومات بشكل برمجي لا أعرفها ولكن هذا يجب أن يبدأ.