トップ 一覧 検索 ヘルプ RSS ログイン

PRG-py_snmpの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!PY SNMP

! install
 pkg install tcl86 tk86 p5-Tcl p5-Tk p5-Term-ReadKey
 pip3 install pysnmp pysnmp-mibs pysmi

 Py> pip3.7 install --upgrade pysnmp
 Py> pip3.7 install --upgrade pysnmp pysnmp pysnmp-mibs pysmi 
 Collecting pysnmp
  Downloading pysnmp-4.4.12-py2.py3-none-any.whl (296 kB)
     |████████████████████████████████| 296 kB 2.5 MB/s 
 Collecting pyasn1>=0.2.3
  Downloading pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
     |████████████████████████████████| 77 kB 787 kB/s 
 Collecting pysmi
  Downloading pysmi-0.3.4-py2.py3-none-any.whl (80 kB)
     |████████████████████████████████| 80 kB 667 kB/s 
 Collecting pycryptodomex
  Downloading pycryptodomex-3.10.1-cp35-abi3-manylinux2010_x86_64.whl (1.9 MB)
     |████████████████████████████████| 1.9 MB 710 kB/s 
 Collecting ply
  Downloading ply-3.11-py2.py3-none-any.whl (49 kB)
     |████████████████████████████████| 49 kB 1.2 MB/s 
 Installing collected packages: ply, pysmi, pycryptodomex, pyasn1, pysnmp
 Successfully installed ply-3.11 pyasn1-0.4.8 pycryptodomex-3.10.1 pysmi-0.3.4 pysnmp-4.4.12


! check snmp_host
 snmpwalk -v 2c -c public snmp_hosts_name_ip hrStorage

! Private MIB の追加
 **ダウンロードしてくる
 $ ~/.local/bin/mibdump.py  ./dir-name/* 
 
 1分以内に終わらない場合にはファイルが足りない。。可能性(ネットに繋がっていない場合。。も)
 http://www.circitor.fr/Mibs/Mibs.php


! Sample

 #
 # -*- encoding: utf-8 -*-
 import sys
 from pysnmp import asn1, v1, v2c
 from pysnmp import role
 
 def snmp_set(ip, community, oid_values, port=161, retries=5, timeout=1, version='1'):
    """
    usage: snmp_set('192.168.10.1', 'comunity', [('1.3.6.1.2.1.43.10.2.1.4.1.1', 'i', 1),])
    """
    client = role.manager((ip, port))
    client.timeout = timeout
    client.retries = retries
    varargs = []
    for oid, type, value in oid_values:
        if type == 'i':
            varargs.append((oid, 'INTEGER', int(value)))
        elif type == 'u':
            varargs.append((oid, 'UNSIGNED32', int(value)))
        elif type == 't':
            varargs.append((oid, 'TIMETICKS', int(value)))
        elif type == 'a':
            varargs.append((oid, 'IPADDRESS', value))
        elif type == 'o':
            varargs.append((oid, 'OBJECTID', value))
        elif type == 's':
            varargs.append((oid, 'OCTETSTRING', value))
        elif type == 'U':
            varargs.append((oid, 'COUNTER64', long(value)))
        else:
            print 'Unknown value type \'%s\'' % (type)
            sys.exit(-1)
 
    try:
        req = eval('v' + version).SETREQUEST()
        rsp = eval('v' + version).GETRESPONSE()
    except (NameError, AttributeError):
        print 'Unsupported SNMP protocol version: %s\n%s' % (version, usage)
        sys.exit(-1)
 
    encoded_oids = []
    encoded_vals = []
    for (oid, type, val) in varargs:
        encoded_oids.append(asn1.OBJECTID().encode(oid))
        encoded_vals.append(eval('asn1.'+type+'()').encode(val))
 
    return client.send_and_receive(req.encode(community=community,  encoded_oids=encoded_oids, encoded_vals=encoded_vals))

! disk size
https://qiita.com/mugi-tea/items/ed0a2500326533af73e5

! SNMP

https://engineeringnote.hateblo.jp/entry/snmp/python/pysnmp

https://engineeringnote.hateblo.jp/entry/snmp/python/pysnmp

! SNMP で応用

https://heartbeats.jp/hbblog/2013/02/predict-rrdtool.html

! MIB の一覧

http://park1.wakwak.com/%7Eima/freebsd_netsnmpoidlist.html

http://www.circitor.fr/Mibs/Mibs.php