GNU/Linux >> Linux Esercitazione >  >> Linux

Come utilizzare Python per eseguire query su WMI (Linux – Windows)

Di recente ho giocato un po' con Ansible e, sfortunatamente, è disponibile solo su Linux. Essendo un grande ragazzo di Windows, ho dovuto imparare molto su come Linux e Python interagiscono con Windows. Il mio obiettivo era ottenere il mio box Ubuntu Linux usando Python per interrogare WMI. Analizziamolo!

Download di WMIC su Linux

Il primo compito consisteva nell'interrogare una classe WMI comune su una macchina Windows. Per farlo su Linux, dobbiamo scaricare e compilare il pacchetto WMIC. Per fare ciò, dai un'occhiata a questo GitHub Gist. Per chiunque sia troppo pigro per fare clic sul collegamento, ecco cosa eseguire per realizzarlo.

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"

Se vedi le proprietà e i valori di Win32_OperatingSystem sei a posto!

WMI in Python

Il prossimo passo è ottenere un modulo WMI per Python. Ho scelto di utilizzare il wmi-client-wrapper Modulo Python. Per installarlo:

> sudo pip install wmi-client-wrapper

Una volta installato, crea uno script Python per testarlo. Ecco come appariva il mio supponendo che tu abbia installato Python 2.x. Se hai Python 3.x la tua riga superiore probabilmente leggerà

#!/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'}]

Sìì! L'output è JSON ed è piuttosto nodoso a questo punto ma, per ora, volevo solo farlo funzionare. Spero che questo aiuti chiunque cerchi di ottenere Python per interrogare WMI su un computer remoto su Linux!


Linux
  1. Come usare BusyBox su Linux

  2. Come installare Python su Linux

  3. Come uso cron in Linux

  4. Come usare TROVA in Linux

  5. Come utilizzare l'esportazione con Python su Linux

Come utilizzare il comando SS di Linux

Come usare il comando nohup di Linux

Come usare traceroute su Kali Linux

Come eseguire Windows 95 su Linux

Come installare e utilizzare Python-Mistune su Linux

Come utilizzare Linux Bash Shell in Windows 10?