zoukankan      html  css  js  c++  java
  • 硬件交互 snmp 使用

    # *********************************snmp使用********************************************
    # coding=utf-8
    """
    filename:snmp_test.py
    
    说明:
    使用系统的 snmpwalk 来查询设备信息,需要先安装 snmp
    代码 Windows 和 Linux 通用
    
    Windows cmd 调用示例:snmpwalk -v 2c -c public 127.0.0.1 1.3.6.1.2.1.1.1
    
    Windows cmd 下查看某主机(192.168.132.130)信息示例:
    snmpwalk -v 2c -c public 192.168.132.130 1.3.6.1.2.1.1.1
    """
    
    # import re
    # import os
    # import time
    # import platform
    #
    # if 'Windows' == platform.system():
    #     hosts = ['localhost']
    # else:
    #     # 在虚拟机运行时则查看本地
    #     hosts = ['127.0.0.1']
    #
    # def snmpWalk(host, oid):
    #     result = os.popen('snmpwalk -v 2c -c public ' + host + ' ' + oid).read().split('
    ')[:-1]
    #     return result
    #
    # # ------------------------------------------------------------
    # # 获取负载信息
    # # ------------------------------------------------------------
    #
    #
    # def getSystem(host):
    #     system = ':'.join(snmpWalk(host, 'system')[0].split(':')[3:]).strip()
    #     return system
    #
    # # ------------------------------------------------------------
    #
    # # ------------------------------------------------------------
    # # 获取负载信息
    # # ------------------------------------------------------------
    #
    #
    # def getLoad(host, loid):
    #     """系统负载"""
    #     load_oids = '1.3.6.1.4.1.2021.10.1.3.' + str(loid)
    #     return snmpWalk(host, load_oids)[0].split(':')[3]
    #
    #
    # def getLoads(host):
    #     load1 = getLoad(host, 1)
    #     load10 = getLoad(host, 2)
    #     load15 = getLoad(host, 3)
    #     return load1, load10, load15
    #
    # # ------------------------------------------------------------
    #
    # # ------------------------------------------------------------
    # # 获取网卡流量
    # # ------------------------------------------------------------
    #
    #
    # def getNetworkDevices(host):
    #     """获取网络设备信息"""
    #     device_mib = snmpWalk(host, 'RFC1213-MIB::ifDescr')
    #     device_list = []
    #     for item in device_mib:
    #         device_list.append(item.split(':')[3].strip())
    #     return device_list
    #
    #
    # def getNetworkData(host, oid):
    #     """获取网络流量"""
    #     data_mib = snmpWalk(host, oid)
    #     data = []
    #     for item in data_mib:
    #         byte = float(item.split(':')[3].strip())
    #         data.append(str(round(byte / 1024, 2)) + ' KB')
    #     return data
    #
    #
    # def getNetworkInfo(host):
    #     device_list = getNetworkDevices(host)
    #     # 流入流量
    #     inside = getNetworkData(host, 'IF-MIB::ifInOctets')
    #     # 流出流量
    #     outside = getNetworkData(host, 'IF-MIB::ifOutOctets')
    #     return device_list, inside, outside
    #
    # # ------------------------------------------------------------
    #
    #
    # # ------------------------------------------------------------
    # # 内存使用率
    # # ------------------------------------------------------------
    #
    # def getSwapTotal(host):
    #     swap_total = snmpWalk(host, 'UCD-SNMP-MIB::memTotalSwap.0')[0].split(' ')[3]
    #     return swap_total
    #
    #
    # def getSwapUsed(host):
    #     swap_avail = snmpWalk(host, 'UCD-SNMP-MIB::memAvailSwap.0')[0].split(' ')[3]
    #     swap_total = getSwapTotal(host)
    #     swap_used = str(round(((float(swap_total) - float(swap_avail)) / float(swap_total)) * 100, 2)) + '%'
    #     return swap_used
    #
    #
    # def getMemTotal(host):
    #     mem_total = snmpWalk(host, 'UCD-SNMP-MIB::memTotalReal.0')[0].split(' ')[3]
    #     return mem_total
    #
    #
    # def getMemUsed(host):
    #     mem_total = getMemTotal(host)
    #     mem_avail = snmpWalk(host, 'UCD-SNMP-MIB::memAvailReal.0')[0].split(' ')[3]
    #     mem_used = str(round(((float(mem_total) - float(mem_avail)) / float(mem_total)) * 100, 2)) + '%'
    #     return mem_used
    #
    #
    # def getMemInfo(host):
    #     mem_used = getMemUsed(host)
    #     swap_used = getSwapUsed(host)
    #     return mem_used, swap_used
    #
    # # ------------------------------------------------------------
    #
    # def main():
    #     for host in hosts:
    #
    #         print('=' * 10 + host + '=' * 10)
    #         start = time.time()
    #         print("系统信息")
    #         system = getSystem(host)
    #         print(system)
    #
    #         print("系统负载")
    #         load1, load10, load15 = getLoads(host)
    #         print('load(5min): %s ,load(10min): %s ,load(15min): %s' % (load1, load10, load15))
    #
    #         print("网卡流量")
    #         device_list, inside, outside = getNetworkInfo(host)
    #         for i, item in enumerate(device_list):
    #             print('%s : RX: %-15s   TX: %s ' % (device_list[i], inside[i], outside[i]))
    #
    #         mem_used, swap_used = getMemInfo(host)
    #         print("内存使用率")
    #         print('Mem_Used = %-15s   Swap_Used = %-15s' % (mem_used, swap_used))
    #
    #         end = time.time()
    #         print('run time:', round(end - start, 2), 's')
    #
    # if __name__ == '__main__':
    #     main()
  • 相关阅读:
    KMP的next
    关于codeblocks左边文件栏不见的问题
    数据结构第二章内容
    设置notepad++ 的 tab 设为4个空格和设置为中文语言
    字面量
    ..没什么
    今天做的HTML练习
    DAY 145 django的聚合函数和aggregate、annotate方法使用
    DAY 144 Math.round()/Math.ceil()/Math.floor()差异
    DAY 143 DRF-Django rest framework
  • 原文地址:https://www.cnblogs.com/gaodi2345/p/13233616.html
Copyright © 2011-2022 走看看