python可以调用windows资源吗_python3调用WMI获取windows资源进程情况

背景吐槽:

前段时间用python做系统监控,网上搜了一大把用python的psutil模块对windows的cpu及内存监控。但是发现没有网络流量的监控,并且内存监控出来的数值也对不上。

后来发现windows自2000以后都自带了wmi接口。而python可以通过win32com模块调用windows的wmi,可以很方便的获取系统、服务、进程、网络资源等使用信息。

而且nscp自带的check模块与python的psutil不外乎也就是调用wmi获取windows系统资源信息。因此纠结再三,还是选择自己造造轮子。

WMI简单使用介绍:

Windows Management Instrumentation: windows管理规范

WMI科普地址:https://baike.baidu.com/item/WMI/8059238?fr=aladdin

windows系统中运行wbemtest确认能调出wmi名空间界面,连接默认命名空间“root\cimv2”

7910284_1508234215Jdlt.png

连接后在"枚举类"中选递归,确定后就会列“root\cmiv2”命名空间下的所有顶级类

7910284_150823426169CA.png

7910284_15082342959s9s.png

以顶级类“Win32_PhysicalMemory”为例:添加顶级类在弹出的实例对话框中选实例按钮,实例化其中一个内存条信息。

7910284_1508234328nGP8.png

实例化后,在实例化对话框中选择“显示MOF”将显示对象的属性信息

7910284_1508234363DEbF.png

python3及WMI下载安装:

python下载安装:

此处飘过,详见https://www.python.org/

wmi模块的下载安装:

地址:https://pypi.python.org/pypi/WMI/#downloads

解压后执行

python(3) setup.py install

或使用pip自动下载安装

pip(3) install wmi

在file里选最新版本的目录,然后选择对应支持的python版本下载

7910284_1508234486ezHH.png

默认安装,一路下一步(必须先装好对应python版本),装好后控面板出现"pywin32-xxx"

7910284_1508234514Pm12.png

PYTHON脚本中import使用win32com模块与wmi模块示列:

from win32com.client import GetObject

import wmi

wmi = GetObject('winmgmts:/')

= wmi.ExecQuery('select * from ') #此处用的WQL语句,类似SQL语句

for item in :

= item.<类属性>

附上监控脚本:

check_win_resource.py

check_win_services.py

check_win_resource.py脚本中类及属性说明:

类:Win32_PerfFormattedData_Tcpip_NetworkInterface:网络及流量信息

属性:

Name:网卡名

BytesReceivedPersec:每秒接受字节数(*8/1024/1024=Bps)

BytesSentPersec:每秒发送字节数(*8/1024/1024=Bps)

BytesTotalPersec:每秒收发字节总数(*8/1024/1024=Bps)

CurrentBandwidth:带宽(/1000/1000=Mbps)

PacketsReceivedPersec:每秒接受包

PacketsSentPersec:每秒发送包

PacketsPersec:每秒收发包总数

类:Win32_PhysicalMemory:获取内存信息

属性:

Capacity:内存容量(单位Byte,/1024/1024 =MB)

类:Win32_PerfFormattedData_PerfOS_Memory:内存使用情况

属性:

AvailableMBytes :剩余内存(单位MB)

因此,内存使用情况=(Capacity/1024/1024) - AvailableMBytes

check_win_services.py脚本中类及属性说明:

类:Win32_PerfFormattedData_W3SVCW3WPCounterProvider_W3SVCW3WP:获取IIS站点的信息

属性:

Name:PID_站点名

类:Win32_PerfFormattedData_PerfProc_Process

属性:

IDProcess:站点pid

PercentProcessorTime:站点CPU使用率(%)

WorkingSetPrivate:站点内存使用(单位:byte,/1024/1024=MB)

CurrentConnections:站点连接数

类:Win32_PerfFormattedData_W3SVC_WebService:很多IIS请求相关信息(脚本中暂时没有用到)

类:Win32_Service:注册服务信息

属性:

Name:服务名

ProcessId:进程号

类:Win32_Process:获取进程信息

属性:

ProcessId:进程号

CommandLine:进程名(需进行字符串处理)

类:Win32_PerfFormattedData_PerfProc_Process:进程运行数据

属性:

IDProcess:进程号

PercentProcessorTime:进程cpu

WorkingSetPrivate:进程内存(单位byte,/1024/1024=MB)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值