كيف يمكنني اكتشاف دوبلكس محول شبكة نافذة برمجيا؟
-
18-09-2019 - |
سؤال
أنا أستخدم 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 التي قد تعمل على معظم الأنفاق.
للدوبلكس، أعتقد أنك لوقت حظا، على الأقل وفقا ل عنوان. وبعد انظر إلى آخر مشاركة في هذا الموضوع - يبدو محددا جدا حول كيفية العمل حول الحد الأقصى في بعض الحالات، ولكن لن يعمل من أجل جميع الأنماء.