GNU/Linux >> Znalost Linux >  >> Linux

Jak používat Python k dotazování WMI (Linux – Windows)

Nedávno jsem si docela dost hrál s Ansible a bohužel je k dispozici pouze na Linuxu. Jako velký kluk s Windows jsem se musel hodně naučit o tom, jak Linux a Python spolupracují s Windows. Mým cílem bylo získat můj Ubuntu Linux box pomocí Pythonu pro dotazování WMI. Pojďme to rozebrat!

Stažení WMIC v systému Linux

Prvním úkolem bylo dotazovat se na běžnou třídu WMI na krabici Windows. K tomu v Linuxu musíme stáhnout a zkompilovat balíček WMIC. Chcete-li to provést, podívejte se na tento GitHub Gist. Pro každého, kdo je příliš líný kliknout na odkaz, zde je návod, jak to provést.

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"

Pokud vidíte vlastnosti a hodnoty Win32_OperatingSystem, jste v pořádku!

WMI v Pythonu

Dalším krokem je získání modulu WMI pro Python. Rozhodl jsem se použít wmi-client-wrapper Modul Python. Postup instalace:

> sudo pip install wmi-client-wrapper

Po instalaci vytvořte skript Python a otestujte jej. Tady je to, jak můj vypadal za předpokladu, že máte nainstalovaný Python 2.x. Pokud máte Python 3.x, váš horní řádek bude pravděpodobně číst

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

Hurá! Výstup je JSON a je v tuto chvíli dost drsný, ale prozatím jsem to chtěl jen spustit. Doufám, že to pomůže každému, kdo se snaží přimět Python k dotazování WMI na vzdáleném počítači v Linuxu!


Linux
  1. Jak používat BusyBox na Linuxu

  2. Jak používám cron v Linuxu

  3. Jak používat FIND v Linuxu

  1. Jak nainstalovat Python na Linux

  2. Jak používat Su Command v Linuxu

  3. Jak používat export s Pythonem na Linuxu

  1. Jak používám nastavení usnadnění přístupu v systému Linux

  2. Jak používat pkgsrc na Linuxu

  3. Jak používat / (oddělovač adresářů) v Linuxu i Windows v Pythonu?