系统相关
首页 > 系统相关> > 如何使用 Python 查询 WMI (Linux -> Windows)

如何使用 Python 查询 WMI (Linux -> Windows)

作者:互联网

我最近玩了很多 Ansible,不幸的是,它只在 Linux 上可用。作为一个 Windows 用户,我必须学习大量关于 Linux 和 Python 如何与 Windows 交互的知识。我的目标是让我的 Ubuntu Linux 机器使用 Python 来查询 WMI。让我们分解吧!

在 Linux 上下载 WMIC

第一个任务是在 Windows 机器上查询一个常见的 WMI 类。要在 Linux 上执行此操作,我们需要下载并编译 WMIC 包。为此,请查看此GitHub Gist。对于任何懒得点击链接的人,这里是运行它的方法。

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"

如果您看到 Win32_OperatingSystem 的属性和值,那就太好了!

Python 中的 WMI

下一步是获取 Python 的 WMI 模块。我选择使用wmi-client-wrapper Python 模块。要安装它:

> sudo pip install wmi-client-wrapper

安装后,创建一个 Python 脚本来测试它。假设您安装了 Python 2.x,这就是我的样子。如果你有 Python 3.x,你的第一行可能会读到

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

耶!输出是 JSON,在这一点上非常粗糙,但现在,我只想让它继续下去。我希望这可以帮助任何试图让 Python 在 Linux 上的远程计算机上查询 WMI 的人!

标签:None,False,Python,wmi,Windows,WMI,Linux
来源: https://blog.csdn.net/allway2/article/details/123027456