Pregunta

Estoy usando WMI para detectar una serie de artículos sobre el estado de un adaptador de red. Entre las cosas que necesito para averiguar son: (a) la velocidad y (b) dúplex.

He sido capaz de detectar la velocidad de un adaptador de red mediante WMI y el siguiente código Python:

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

No parece ser una clase perfecta para los datos que yo quiero: MSNDis_LinkParameters. Sin embargo, no parece ser poblada esta tabla. Hay valores en Win32_NetworkAdapter así, sino que además no se rellenan.

Yo estaría feliz de usar una API C nativo o WMI, pero no puedo hacer captura de imágenes, porque la aplicación tiene que trabajar con lenguajes arbitrarios. Gracias!

¿Fue útil?

Solución

Al parecer, la cuestión de fondo aquí es que la implementación del proveedor WMI es manejado por el proveedor de NIC, no el OS-- por lo que algunas tarjetas de red puede apoyar algunos ajustes mientras (como usted ha descubierto) y otros no.

Para la velocidad de enlace, echa un vistazo a este para algunos scripts WMI que puede funcionar en la mayoría de las NIC.

Para la impresión dúplex, creo que estás fuera de suerte, al menos según la tema . Mira el último mensaje en el que thread-- parece bastante específica acerca de cómo evitar el límite en algunos casos, pero no funcionará para todas las NIC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top