سؤال

أنا أستخدم WMI للكشف عن عدد من العناصر حول حالة محول الشبكة. من بين الأشياء التي أحتاج إليها لمعرفة (أ) السرعة و (ب) دوبلكس.

تمكنت من اكتشاف سرعة محول الشبكة باستخدام WMI ورمز الثعبان التالي:

from pycom.client import wmi

dev_name = r"\\DEVICE\\{287EB4BB-5C2A-4108-B377-15E1D0B0E760}"
query1 = """
SELECT * 
FROM  MSNdis_EnumerateAdapter
WHERE DeviceName = '%s'""" % dev_name


wmi_ndis = wmi.WMI("root\\WMI")
results = wmi_ndis.ExecQuery(query1)
instance_name = results[0].InstanceName

del results

query2="""
SELECT * 
FROM MSNdis_LinkSpeed
WHERE InstanceName='%s'""" % instance_name
results = wmi_ndis.ExecQuery(query2)
linkspeed = results[0].NdisLinkSpeed

del results

print instance_name, linkspeed

del instance_name
del linkspeed
del wmi_ndis

يبدو أن هناك فئة مثالية للبيانات التي أريدها: msndis_linkparameters. ومع ذلك، لا يبدو أن هذا الجدول غير مأجور. هناك قيم في Win32_NetworkAdaper أيضا، لكنها لا يتم ملؤها أيضا.

سأكون سعيدا باستخدام واجهة برمجة تطبيقات C أو WMI الأصلية، لكنني لا أستطيع القيام بشرط الشاشة لأن التطبيق يحتاج إلى العمل مع لغات تعسفية. شكرا!

هل كانت مفيدة؟

المحلول

على ما يبدو المشكلة الأساسية هنا هي أن تنفيذ مزود WMI يتم التعامل معه بواسطة البائع NIC، وليس نظام التشغيل - لذلك قد تدعم بعض الأنظمة الدموية بعض الإعدادات أثناء (كما اكتشفت) الآخرين لا.

لسرعة الارتباط، تحقق من هذه بالنسبة لبعض البرامج النصية WMI التي قد تعمل على معظم الأنفاق.

للدوبلكس، أعتقد أنك لوقت حظا، على الأقل وفقا ل عنوان. وبعد انظر إلى آخر مشاركة في هذا الموضوع - يبدو محددا جدا حول كيفية العمل حول الحد الأقصى في بعض الحالات، ولكن لن يعمل من أجل جميع الأنماء.

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