كيف يمكنني الحصول على حالة اتصال خدمات شبكة OSX بشكل برمجي؟

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

  •  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 على الكثير من المعلومات ، لكن قد يكون هناك بعض مكتبات النظام للوصول إلى هذه المعلومات بشكل برمجي لا أعرفها ولكن هذا يجب أن يبدأ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top