diff options
Diffstat (limited to 'python/README')
-rw-r--r-- | python/README | 346 |
1 files changed, 346 insertions, 0 deletions
diff --git a/python/README b/python/README new file mode 100644 index 0000000..ef5b477 --- /dev/null +++ b/python/README @@ -0,0 +1,346 @@ + The Python 'netsnmp' Extension Module + for the Net-SNMP Library + +Contents: + Introduction: + Availability: + Contact: + Supported Platforms: + Release Notes: + Installation: + Operational Description: + Trouble Shooting: + Acknowledgments: + License/Copyright: + +Introduction: + + This is the Python 'netsnmp' extension module. The 'netsnmp' module + provides a full featured, tri-lingual SNMP (SNMPv3, SNMPv2c, + SNMPv1) client API. The 'netsnmp' module internals rely on the + Net-SNMP toolkit library. For information on the Net-SNMP library + see the documentation provided with the Net-SNMP distribution or + the project web page available on 'Source Forge': + + http://www.net-snmp.org/ + +Availability: + + The most recent release of the Python 'netsnmp' module can be found + bundled with the latest Net-SNMP distribution available from: + + http://www.net-snmp.org/download.html + +Contact: + + The following mailing list should be consider the primary support + mechanism for this module: + + net-snmp-users@lists.sourceforge.net mail list + + (see http://www.net-snmp.org/lists/users/ to subscribe) + +Supported Platforms: + + Linux 2.x + Other UNIX/POSIX variants (untested) + MS Windows (untested) + + Let us know where it *doesn't* work, as it should on most systems + +Release Notes: + + This initial alpha release of the Python 'netsnmp' extension module + has been developed against net-snmp 5.4.pre1. + + Only syncronous, client-side functionality is implemented. + + Access to the parsed MIB database is not yet implemented. + +KNOWN BUGS: + + Too many to mention at this point + +Installation: + + Build and install the Net-SNMP package - see Net-SNMP README and + INSTALL docs. + + Unix: + + cd net-snmp/python + python setup.py build + python setup.py test (requires a locally running agent w/ config provided) + python setup.py install + + +Operational Description: + + The basic operations of the SNMP protocol are provided by this + module through an object oriented interface for modularity and ease + of use. The primary class is netsnmp.Session which encapsulates + the persistent aspects of a connection between the management + application and the managed agent. This class supplies 'get', + 'getnext', 'getbulk', 'set' and other method calls. + + A description of the fields which can be specified when instantiating an + netsnmp.Session follows: + + netsnmp.Session(<tag>=<value>, ... ) + + DestHost - default 'localhost', hostname or ip addr of SNMP agent + Community - default 'public', SNMP community string (used for both R/W) + Version - default '3', [1, 2 (equiv to 2c), 3] + RemotePort - default '161', allow remote UDP port to be overridden + Timeout - default '500000', micro-seconds before retry + Retries - default '3', retries before failure + RetryNoSuch - default '0', if enabled NOSUCH errors in 'get' pdus will + be repaired, removing the varbind in error, and resent - + undef will be returned for all NOSUCH varbinds, when set + to '0' this feature is disabled and the entire get request + will fail on any NOSUCH error (applies to v1 only) + SecName - default 'initial', security name (v3) + SecLevel - default 'noAuthNoPriv', security level [noAuthNoPriv, + authNoPriv, authPriv] (v3) + SecEngineId - default <none>, security engineID, will be probed if not + supplied (v3) + ContextEngineId - default <SecEngineId>, context engineID, will be + probed if not supplied (v3) + Context - default '', context name (v3) + AuthProto - default 'MD5', authentication protocol [MD5, SHA] (v3) + AuthPass - default <none>, authentication passphrase + PrivProto - default 'DES', privacy protocol [DES] (v3) + PrivPass - default <none>, privacy passphrase (v3) + UseLongNames - set to non-zero to have <tags> for 'getnext' methods + generated preferring longer Mib name convention (e.g., + system.sysDescr vs just sysDescr) + UseSprintValue - set to non-zero to have return values + for 'get' and 'getnext' methods formatted with the libraries + sprint_value function. This will result in certain data types + being returned in non-canonical format Note: values returned + with this option set may not be appropriate for 'set' + operations (see discussion of value formats in <vars> + description section) + UseEnums - set to non-zero to have integer return values + converted to enumeration identifiers if possible, + these values will also be acceptable when supplied to + 'set' operations + UseNumeric - set to non-zero to have <tags> returned by the 'get' + methods untranslated (i.e. dotted-decimal). Setting the + UseLongNames value for the session is highly recommended. + BestGuess - this setting controls how <tags> are parsed. setting + to 0 causes a regular lookup. setting to 1 causes a regular + expression match (defined as -Ib in snmpcmd). setting to 2 + causes a random access lookup (defined as -IR in snmpcmd). + ErrorStr - read-only, holds the error message assoc. w/ last request + ErrorNum - read-only, holds the snmp_err or status of last request + ErrorInd - read-only, holds the snmp_err_index when appropriate + + private: + sess_ptr - internal field used to cache a created session structure + + methods: + + get(<netsnmp.VarList object>) + - SNMP GET a netsnmp.VarList object must be supplied, + returns a tuple of values for each varbind in list + + getnext(<netsnmp.VarList object>) + - SNMP GETNEXT, a netsnmp.VarList object must be supplied + returns retrieved value(s), VarList passed as arguments + are updated to return a list of next lexicographical + Varbind objects. returns a tuple of values for each + varbind in list + + set(<netsnmp.VarList object>) + - SNMP SET, a netsnmp.VarList object must be supplied + the value field in all Varbinds must be in a canonical + format (i.e., well known format) to ensure unambiguous + translation to SNMP MIB data value (see discussion of + canonical value format <vars> description section), + returns true on success or None on error. + + getbulk(<non-repeaters>, <max-repeaters>, <netsnmp.VarList object>) + - SNMP GETBULK, a netsnmp.VarList object must be supplied + the single next lexico instance is fetched for the first + n Varbinds in the list as defined by <non-repeaters>. + For the remaining Varbinds, the next m lexico instances + are retrieved each of the remaining Varbinds, + where m is <max-repeaters>. Returns a tuple of values + retrieved. + + walk(<netsnmp.VarList object>) + - Performs multiple GETNEXT requests in order to + return a tuple of values retrieved from the MIB + below the Varbind passed in. The VarList passed + in will be updated to contain a complete set of + Varbinds created for the results of the walk. + + Note that only one varbind should be contained in the + VarList passed in. The code is structured to maybe + handle this is the the future, but right now walking + multiple trees at once is not yet supported and will + produce insufficient results. + + + Acceptable variable formats: + + netsnmp.VarList: - represents an list of Varbind objects to get or set. + takes are arguments and unspecified number of Varbinds, + or tuples which will be converted to Varbinds. + + + netsnmp.Varbind: - represents a single MIB object to get or set + implemented as Python[<tag>, <iid>, <val>, <type>]. + <tag> - one of the following forms: + 1) leaf identifier (e.g., 'sysDescr') assumed to be + unique for practical purposes + 2) fully qualified identifier (e.g., + '.iso.org.dod.internet.mgmt.mib-2.system.sysDescr') + 3) fully qualified, dotted-decimal, numeric OID + (e.g., '.1.3.6.1.2.1.1.1') + <iid> - the dotted-decimal, instance identifier. for + scalar MIB objects use '0' + <val> - the SNMP data value retrieved from or being set + to the agents MIB. for set operations the <val> + format must be canonical to ensure unambiguous + translation. The canonical forms are as follows: + OBJECTID => dotted-decimal (e.g., .1.3.6.1.2.1.1.1) + OCTETSTR => perl scalar containing octets, + INTEGER => decimal signed integer (or enum), + NETADDR => dotted-decimal, + IPADDR => dotted-decimal, + COUNTER => decimal unsigned integer, + COUNTER64 => decimal unsigned integer, + GAUGE, => decimal unsigned integer, + UINTEGER, => decimal unsigned integer, + TICKS, => decimal unsigned integer, + OPAQUE => perl scalar containing octets, + NULL, => perl scalar containing nothing, + + <type> - SNMP data type (see list above), this field is + populated by 'get' and 'getnext' operations. In + some cases the programmer needs to populate this + field when passing to a 'set' operation. this + field need not be supplied when the attribute + indicated by <tag> is already described in the + parsed MIB. for 'set's, if a numeric OID is used + and the object is not in the parsed MIB, + the <type> field must be supplied + + + Python 'netsnmp' package variables and functions: + + + netsnmp.verbose - default '0', + controls warning/info output of themodule + 0 => no output, + 1 => enables warning/info + +(needs implementation) + $SNMP::debugging - default '0', controls debugging output level + within SNMP module and libsnmp + 1 => enables 'SNMP::verbose' (see above) + 2 => level 1 plus snmp_set_do_debugging(1), + 3 => level 2 plus snmp_set_dump_packet(1) + + $SNMP::dump_packet - default '0', set [non-]zero to independently set + snmp_set_dump_packet() + + Exported 'netsnmp' package utility functions: + + snmpget(<Varbind/VarList>, <Session args>) + - takes args of netsnmp.Session preceded by those of the + corresponding netsnmp.Session method. Returns a tuple with + Varbind values fetched, and input is updated to contain + complete Varbinds fetched. + + snmpgetnext(<Varbind/VarList>, <Session args>) + - takes args of netsnmp.Session preceded by those of the + corresponding netsnmp.Session method. Returns a tuple with + Varbind values fetched, and input is updated to contain + complete Varbinds fetched. + + snmpgetbulk(nonrepeaters, maxrepetitions,<VarList>, <Session args>) + - takes args of netsnmp.Session preceded by those of the + corresponding netsnmp.Session method. Returns a tuple with + Varbind values fetched, and VarList is updated to contain + complete Varbinds fetched. + + snmpset(<Varbind/VarList>, <Session args>) + - takes args of netsnmp.Session preceded by those of the + corresponding netsnmp.Session method. returns True on success, + otherwise False. + + snmpwalk(<Varbind/VarList>, <Session args>)) + - takes args of netsnmp.Session preceded by a Varbind or + VarList from which the 'walk' operation will start. + Returns a tuple of values retrieved from the MIB below + the Varbind passed in. If a VarList is passed in it + will be updated to contain a complete set of VarBinds + created for the results of the walk. It is not + recommended to pass in just a Varbind since you loose + the ability to examine the returned OIDs. But, if only + a Varbind is passed in it will be returned unaltered. + + Note that only one varbind should be contained in the + VarList passed in. The code is structured to maybe + handle this is the the future, but right now walking + multiple trees at once is not yet supported and will + produce insufficient results. + +Trouble Shooting: + + If problems occur there are number areas to look at to narrow down the + possibilities. + + The first step should be to test the Net-SNMP installation + independently from the Python 'netsnmp' Extension. + + Try running the apps from the Net-SNMP distribution. + + Make sure your agent (snmpd) is running and properly configured with + read-write access for the community you are using. + + Ensure that your MIBs are installed and environment variables are set + appropriately (see man mib_api) + + Be sure to ensure headers and libraries from old CMU installations are + not being used by mistake (see -NET-SNMP-PATH). + + If the problem occurs during compilation/linking check that the snmp + library being linked is actually the Net-SNMP library (there have been + name conflicts with existing snmp libs). + + Also check that the header files are correct and up to date. + + Sometimes compiling the Net-SNMP library with + 'position-independent-code' enabled is required (HPUX specifically). + + If you cannot resolve the problem you can email + net-snmp-users@lists.sourceforge.net. + + Please give sufficient information to analyze the problem (OS type, + versions for OS/python/net-SNMP/compiler, complete error output, etc.) + +Acknowledgments: + + Giovanni Marzot (the original author) + ScienceLogic, LLC sponsored the initial development of this module. + Wes Hardaker and the net-snmp-coders + + Thanks in advance to any who supply patches, suggestions and feedback. + +License: + + Please see the LICENSE file contained with this package + +Copyright: + + Copyright (c) 2006 G. S. Marzot. All rights reserved. + This program is free software; you can redistribute it and/or + modify it under the same terms as Net-SNMP itself. + + Copyright (c) 2006 SPARTA, Inc. All Rights Reserved. This + program is free software; you can redistribute it and/or modify + it under the same terms as Net-SNMP itself. |