GNU/Linux >> Belajar Linux >  >> Linux

Cara Menggunakan Python untuk Query WMI (Linux – Windows)

Saya baru-baru ini bermain dengan Ansible sedikit dan, sayangnya, itu hanya tersedia di Linux. Menjadi orang Windows yang besar, saya harus belajar banyak tentang bagaimana Linux dan Python berinteraksi dengan Windows. Tujuan saya adalah mendapatkan kotak Linux Ubuntu saya menggunakan Python untuk menanyakan WMI. Mari kita hancurkan!

Mengunduh WMIC di Linux

Tugas pertama adalah menanyakan kelas WMI umum pada kotak Windows. Untuk melakukan ini di Linux, kita perlu mengunduh dan mengkompilasi paket WMIC. Untuk melakukan ini, lihat GitHub Gist ini. Bagi siapa pun yang terlalu malas untuk mengeklik tautan, inilah yang harus dijalankan untuk mewujudkannya.

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"

Jika Anda melihat properti dan nilai Win32_OperatingSystem, Anda baik-baik saja!

WMI dengan Python

Langkah selanjutnya adalah mendapatkan modul WMI untuk Python. Saya memilih untuk menggunakan wmi-client-wrapper Modul Python. Untuk menginstal ini:

> sudo pip install wmi-client-wrapper

Setelah terinstal, buat skrip Python untuk mengujinya. Inilah yang tampak seperti milik saya dengan asumsi Anda telah menginstal Python 2.x. Jika Anda memiliki Python 3.x, baris teratas Anda mungkin akan terbaca

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

Ya! Outputnya adalah JSON dan cukup kasar pada saat ini tetapi, untuk saat ini, saya hanya ingin menjalankannya. Saya harap ini membantu siapa pun yang mencoba membuat Python untuk menanyakan WMI di komputer jarak jauh di Linux!


Linux
  1. Cara menggunakan BusyBox di Linux

  2. Cara menginstal Python di Linux

  3. Bagaimana saya menggunakan cron di Linux

  1. Cara menggunakan FIND di Linux

  2. Cara menggunakan Perintah Su di Linux

  3. Cara menggunakan ekspor dengan Python di Linux

  1. Bagaimana saya menggunakan pengaturan aksesibilitas Linux

  2. Cara menggunakan pkgsrc di Linux

  3. Bagaimana cara menggunakan / (pemisah direktori) di Linux dan Windows dengan Python?