1 """Trivial example to retrieve an OID from a remote Agent"""
    2 from twisted.internet import reactor
    3 from twistedsnmp import snmpprotocol, agentproxy
    4 import pprint
    5 
    6 def main( proxy, oids ):
    7     """Do a getTable on proxy for OIDs and store in oidStore"""
    8     df = proxy.getTable(
    9         oids, timeout=.25, retryCount=5
   10     )
   11     df.addCallback( printResults )
   12     df.addCallback( exiter )
   13     df.addErrback( errorReporter )
   14     df.addErrback( exiter )
   15     return df
   16 
   17 def printResults( result ):
   18     print 'Results:'
   19     pprint.pprint( result )
   20     return result
   21 
   22 def errorReporter( err ):
   23     print 'ERROR', err.getTraceback()
   24     return err
   25 def exiter( value ):
   26     reactor.stop()
   27     return value
   28 
   29 
   30 if __name__ == "__main__":
   31     import sys, logging
   32     logging.basicConfig()
   33     # need to get the ip address
   34     usage = """Usage:
   35     simplegettable ipAddress community baseoid...
   36 
   37 ipAddress -- dotted IP address of the agent
   38 community -- community string for the agent
   39 baseoid -- dotted set of OIDs to retrieve from agent
   40 """
   41     if len(sys.argv) < 3:
   42         print usage
   43         sys.exit( 1 )
   44     ipAddress = sys.argv[1]
   45     # choose random port in range 25000 to 30000
   46     port = snmpprotocol.port()
   47     proxy = agentproxy.AgentProxy(
   48         ipAddress, 161,
   49         community = sys.argv[2],
   50         snmpVersion = 'v2',
   51         protocol = port.protocol,
   52     )
   53     if not sys.argv[3:]:
   54         oids = [
   55             '.1.3.6.1.2.1.1', # system tables
   56         ]
   57     else:
   58         oids = sys.argv[3:]
   59     reactor.callWhenRunning( main, proxy, oids )
   60     reactor.run()