GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser Python pour interroger WMI (Linux - Windows)

J'ai récemment beaucoup joué avec Ansible et, malheureusement, il n'est disponible que sur Linux. Étant un grand gars de Windows, j'ai dû apprendre une tonne sur la façon dont Linux et Python interagissent avec Windows. Mon objectif était d'obtenir ma boîte Ubuntu Linux en utilisant Python pour interroger WMI. Décomposons-le !

Télécharger WMIC sous Linux

La première tâche consistait à interroger une classe WMI commune sur une boîte Windows. Pour ce faire sous Linux, nous devons télécharger et compiler le package WMIC. Pour ce faire, consultez ce GitHub Gist. Pour ceux qui sont trop paresseux pour cliquer sur le lien, voici ce qu'il faut exécuter pour y arriver.

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 vous voyez les propriétés et les valeurs de Win32_OperatingSystem, vous êtes bon !

WMI en Python

L'étape suivante consiste à obtenir un module WMI pour Python. J'ai choisi d'utiliser le wmi-client-wrapper Module Python. Pour l'installer :

> sudo pip install wmi-client-wrapper

Une fois installé, créez un script Python pour le tester. Voici à quoi ressemblait le mien en supposant que Python 2.x est installé. Si vous avez Python 3.x, votre première ligne lira probablement

#!/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! La sortie est JSON et est assez noueuse à ce stade mais, pour l'instant, je voulais juste que ça marche. J'espère que cela aidera quiconque essaie de faire en sorte que Python interroge WMI sur un ordinateur distant sous Linux !


Linux
  1. Comment utiliser BusyBox sous Linux

  2. Comment installer Python sur Linux

  3. Comment j'utilise cron sous Linux

  4. Comment utiliser FIND sous Linux

  5. Comment utiliser l'exportation avec Python sous Linux

Comment utiliser la commande Linux SS

Comment utiliser la commande Linux nohup

Comment utiliser traceroute sur Kali Linux

Comment exécuter Windows 95 sous Linux

Comment installer et utiliser Python-Mistune sous Linux

Comment utiliser Linux Bash Shell dans Windows 10 ?