GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie Python zum Abfragen von WMI (Linux – Windows)

Ich habe in letzter Zeit ziemlich viel mit Ansible gespielt und leider ist es nur unter Linux verfügbar. Als großer Windows-Typ musste ich eine Menge darüber lernen, wie Linux und Python mit Windows interagieren. Mein Ziel war es, meine Ubuntu-Linux-Box mit Python dazu zu bringen, WMI abzufragen. Lass es uns aufschlüsseln!

WMIC unter Linux herunterladen

Die erste Aufgabe bestand darin, eine allgemeine WMI-Klasse auf einer Windows-Box abzufragen. Um dies unter Linux zu tun, müssen wir das WMIC-Paket herunterladen und kompilieren. Schauen Sie sich dazu diesen GitHub Gist an. Für alle, die zu faul sind, auf den Link zu klicken, hier ist, was ausgeführt werden muss, um dies zu erreichen.

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"

Wenn Sie die Eigenschaften und Werte von Win32_OperatingSystem sehen, sind Sie gut!

WMI in Python

Der nächste Schritt besteht darin, ein WMI-Modul für Python zu erhalten. Ich habe mich für den wmi-client-wrapper entschieden Python-Modul. Um dies zu installieren:

> sudo pip install wmi-client-wrapper

Erstellen Sie nach der Installation ein Python-Skript, um es zu testen. So sah meins aus, vorausgesetzt, Sie haben Python 2.x installiert. Wenn Sie Python 3.x haben, wird Ihre oberste Zeile wahrscheinlich

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

Yay! Die Ausgabe ist JSON und an dieser Stelle ziemlich knorrig, aber im Moment wollte ich nur damit anfangen. Ich hoffe, dies hilft jedem, der versucht, Python dazu zu bringen, WMI auf einem Remote-Computer unter Linux abzufragen!


Linux
  1. So verwenden Sie BusyBox unter Linux

  2. So installieren Sie Python unter Linux

  3. Wie ich Cron unter Linux verwende

  4. So verwenden Sie FIND unter Linux

  5. So verwenden Sie den Export mit Python unter Linux

So verwenden Sie den Linux-SS-Befehl

So verwenden Sie den Linux-nohup-Befehl

So verwenden Sie Traceroute unter Kali Linux

So führen Sie Windows 95 unter Linux aus

So installieren und verwenden Sie Python-Mistune unter Linux

Wie verwende ich die Linux-Bash-Shell in Windows 10?