GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar Python para consultar WMI (Linux – Windows)

Recientemente he estado jugando bastante con Ansible y, desafortunadamente, solo está disponible en Linux. Siendo un gran tipo de Windows, tuve que aprender mucho sobre cómo Linux y Python interactúan con Windows. Mi objetivo era obtener mi caja Ubuntu Linux usando Python para consultar WMI. ¡Vamos a desglosarlo!

Descargando WMIC en Linux

La primera tarea fue consultar una clase WMI común en un cuadro de Windows. Para hacer esto en Linux, necesitamos descargar y compilar el paquete WMIC. Para hacer esto, echa un vistazo a este GitHub Gist. Para cualquiera que sea demasiado perezoso para hacer clic en el enlace, esto es lo que debe ejecutar para que esto suceda.

dpkg -i libwmiclient1_1.3.14-3_amd64.deb
dpkg -i wmi-client_1.3.14-3_amd64.deb

## Test a query to a remote computer
wmic -Utestuser%tstpass //<remote IP> "SELECT * FROM Win32_OperatingSystem"

Si ve las propiedades y los valores de Win32_OperatingSystem, ¡está bien!

WMI en Python

El siguiente paso es obtener un módulo WMI para Python. Elegí usar el wmi-client-wrapper Módulo Python. Para instalar esto:

> sudo pip install wmi-client-wrapper

Una vez instalado, cree un script de Python para probarlo. Así es como se veía el mío asumiendo que tienes Python 2.x instalado. Si tiene Python 3.x, su línea superior probablemente dirá

#!/usr/bin/python3
#!/usr/bin/python

import wmi_client_wrapper as wmi
wmic = wmi.WmiClientWrapper(username="localaccount",password="localpassword",host="<HostNameOrIpAddress>",)
output = wmic.query("SELECT * FROM Win32_Processor")
print(output)

## Save this as <FileName>.py and mark is as executable:
chmod +x <FileName>.py
## Then, we can execute the script to see if it brings back the Win32_Processor class.

[{'L2CacheSize': '0', 'VMMonitorModeExtensions': False, 'ConfigManagerErrorCode': '0',  'VoltageCaps': '0', 'PowerManagementSupported': False, 'LoadPercentage': '1',  'CreationClassName': 'Win32_Processor', 'Version': '', 'Role': 'CPU', 'CpuStatus': '1',  'SecondLevelAddressTranslationExtensions': False, 'Revision': '11527', 'Status': 'OK',  'PNPDeviceID': None, 'L2CacheSpeed': '0', 'AddressWidth': '64',  'ConfigManagerUserConfig': False, 'ErrorCleared': False, 'ProcessorId': '0F8BFBFF000206D7',  'ProcessorType': '3', 'DeviceID': 'CPU0', 'CurrentVoltage': '12', 'CurrentClockSpeed':  '2600', 'Manufacturer': 'GenuineIntel', 'Name': 'Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz',  'InstallDate': None, 'Level': '6', 'SocketDesignation': 'None', 'NumberOfCores': '1',  'Caption': 'Intel64 Family 6 Model 45 Stepping 7', 'StatusInfo': '3', 'Architecture': '9',  'UniqueId': None, 'PowerManagementCapabilities': 'NULL', 'OtherFamilyDescription': None,  'Description': 'Intel64 Family 6 Model 45 Stepping 7', 'NumberOfLogicalProcessors': '1',  'Family': '179', 'ErrorDescription': None, 'UpgradeMethod': '6', 'SystemName': 'HOSTNAME',  'LastErrorCode': '0', 'ExtClock': '8000', 'Stepping': None,  'VirtualizationFirmwareEnabled': False, 'MaxClockSpeed': '2600', 'L3CacheSize': '0',  'L3CacheSpeed': '0', 'Availability': '3', 'SystemCreationClassName': 'Win32_ComputerSystem',  'DataWidth': '64'}]

¡Hurra! La salida es JSON y es bastante retorcida en este punto pero, por ahora, solo quería que esto funcionara. ¡Espero que esto ayude a cualquiera que intente hacer que Python consulte WMI en una computadora remota en Linux!


Linux
  1. Cómo usar BusyBox en Linux

  2. Cómo usar BUSCAR en Linux

  3. Cómo usar el comando Su en Linux

  4. Cómo usar la exportación con Python en Linux

  5. ¿Cómo usar / (separador de directorio) tanto en Linux como en Windows en Python?

Cómo usar el comando SS de Linux

Cómo usar el comando nohup de Linux

Cómo usar traceroute en Kali Linux

Cómo ejecutar Windows 95 en Linux

Cómo instalar y usar Python-Mistune en Linux

¿Cómo usar Linux Bash Shell dentro de Windows 10?