python写一个利用MIB读取内存与cpu利用率的脚本
时间: 2023-03-01 17:17:43 浏览: 121
获取CPU和内存的使用率
您可以使用 SNMP (Simple Network Management Protocol) 和 PySNMP 库来实现读取内存和 CPU 利用率的脚本。
以下是一个简单的示例:
```
from pysnmp.hlapi import *
def get_cpu_utilization():
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData('public', mpModel=0),
UdpTransportTarget(('192.168.1.100', 161)),
ContextData(),
ObjectType(ObjectIdentity('UCD-SNMP-MIB', 'laLoad')),
lookupNames=True, lookupValues=True
)
)
if errorIndication:
print(errorIndication)
else:
if errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
def get_memory_utilization():
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData('public', mpModel=0),
UdpTransportTarget(('192.168.1.100', 161)),
ContextData(),
ObjectType(ObjectIdentity('UCD-SNMP-MIB', 'memTotalReal')),
ObjectType(ObjectIdentity('UCD-SNMP-MIB', 'memAvailReal')),
lookupNames=True, lookupValues=True
)
)
if errorIndication:
print(errorIndication)
else:
if errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
total_memory = int(varBinds[0][1])
available_memory = int(varBinds[1][1])
utilization = (total_memory - available_memory) / total_memory * 100
print('Memory utilization:', utilization, '%')
if __name__ == '__main__':
get_cpu_utilization()
get_memory_utilization()
```
需要注意的是,您需要先确保目标设备支持 SNMP 协议,并且已配置了公共社区字符串。此外,需要在目标设备上安装 UCD-SNMP-MIB。
阅读全文