Advertisement
Dragonnek

NetSNMP wrapper

Apr 27th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.24 KB | None | 0 0
  1. #!/usr/bin/env python2.6
  2.  
  3. import netsnmp
  4.  
  5. class snmp:
  6.         "Encapsulating class using NetSNMP library"
  7.  
  8.         version = 2
  9.         community = "public"
  10.         useNumeric = True
  11.         destination = None
  12.  
  13.         _session = None
  14.  
  15.         def __init__(self):
  16.                 self._session = netsnmp.Session(
  17.                         Version=self.version,
  18.                         Community=self.community,
  19.                         UseNumeric=self.useNumeric
  20.                         )
  21.  
  22.         def dest(self, destination):
  23.                 "Set destination"
  24.  
  25.                 self.destination = destination
  26.  
  27.         def get(self, oid):
  28.                 "Perform SNMP get request"
  29.  
  30.                 var = netsnmp.Varbind(oid)
  31.                 ret = netsnmp.snmpget(var, Version=self.version, Community=self.community, UseNumeric=self.useNumeric, DestHost=self.destination)
  32.                 return ret[0]
  33.  
  34.         def walk(self, oid, format=None):
  35.                 """Perform SNMP walk request
  36.  
  37.                format - specifies returned data format
  38.                        values: list of returned VALs
  39.                        keys: list of returned IIDs
  40.                        tuples: list of tuples (IID, VAL)
  41.                        dict: dictionary {IID: VAL}
  42.                        None (default): list of tuples (TAG, IID, TYPE, VAL)
  43.                
  44.                This function don't use bulk-walk yet.
  45.                """
  46.  
  47.                 var = netsnmp.VarList(netsnmp.Varbind(oid))
  48.                 ret = netsnmp.snmpwalk(var, Version=self.version, Community=self.community, UseNumeric=self.useNumeric, DestHost=self.destination)
  49.  
  50.                 if format == "values":
  51.                         return [var[i].val for i in range(len(var))]
  52.                 elif format == "keys":
  53.                         return [var[i].iid for i in range(len(var))]
  54.                 elif format == "tuples":
  55.                         return [(var[i].iid, var[i].val) for i in range(len(var))]
  56.                 elif format == "dict":
  57.                         return dict([(var[i].iid, var[i].val) for i in range(len(var))])
  58.                 else:
  59.                         return [(var[i].tag, var[i].iid, var[i].type, var[i].val) for i in range(len(var))]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement