A.T.T.
Hi, Lispers
After one and a half year since I started this project (0.01 on May 2007, 1.2 on Oct 2007), I'm glad to release cl-net-snmp 3.0 today, the pure-lisp implementation of Simple Network Management Protocol (SNMP, RFC 2271).
From this release, I throw out the ZEBU LALR parser and write a simple ASN.1 compiler (based on LispWorks parsergen) to generate Lisp code from ASN.1 MIB files, then use ASDF to load them directly. Any ASN.1 Object Identifier value are treated as a Lisp variable.
This project is part of my big plan: write a new system administration platform (like HP OpenView) completely in Common Lisp.
Cliki page: (contains link to other resources)
http://www.cliki.net/cl-net-snmp
Current Supported Platforms:
- LispWorks
- CMUCL
- SBCL
- Clozure CL
- Allegro CL
Features:
- Full SNMP protocol support (SNMPv1, SNMPv2c, SNMPv3)
- Support MIB and ASN.1 object id names
- Fast BER encode/decode based on CLOS
- UDP retransmit support
- [LispWorks] Simple SNMP Server
- [LispWorks] GUI MIB Browser
Download:
You can use ASDF-INSTALL to install cl-net-snmp 3.0, or download following release files:
- The core: SNMP 3.0:
http://common-lisp.net/project/cl-net-snmp/release/snmp_3.0.tar.gz
- ASN.1 runtime and compiler, version 2.3:
http://common-lisp.net/project/cl-net-snmp/release/asn.1_2.3.tar.gz
- UDP patch for usocket, version 1.2:
http://common-lisp.net/project/cl-net-snmp/release/usocket-udp_1.2.tar.gz
- LispWorks UDP support, version 2.1:
http://common-lisp.net/project/cl-net-snmp/release/lispworks-udp_2.1.tar.gz
Sample Usage:
? (snmp:snmp-walk "debian-amd64.local" '("system")) (((#<OBJECT-ID sysDescr.0> "Linux debian-amd64 2.6.25-2-amd64 #1 SMP Fri Jun 27 00:16:12 UTC 2008 x86_64") (#<OBJECT-ID sysObjectID.0> #<OBJECT-ID netSnmpAgentOIDs.10>) (#<OBJECT-ID sysUpTimeInstance (0) [0]> #<TIMETICKS (208848) 0:34:48.48>) (#<OBJECT-ID sysContact.0> "Root root@localhost (configure /etc/snmp/snmpd.local.conf)") (#<OBJECT-ID sysName.0> "debian-amd64") (#<OBJECT-ID sysLocation.0> "Unknown (configure /etc/snmp/ snmpd.local.conf)") (#<OBJECT-ID sysORLastChange.0> #<TIMETICKS (0) 0:00:00.00>) (#<OBJECT-ID sysORID.1> #<OBJECT-ID snmpFrameworkMIBCompliances.1>) (#<OBJECT-ID sysORID.2> #<OBJECT-ID snmpMPDMIBCompliances.1>) (#<OBJECT-ID sysORID.3> #<OBJECT-ID usmMIBCompliances.1>) (#<OBJECT-ID sysORID.4> #<OBJECT-ID snmpMIB (1) [2]>) (#<OBJECT-ID sysORID.5> #<OBJECT-ID tcpMIB (49) [1]>) (#<OBJECT-ID sysORID.6> #<OBJECT-ID ip (4) [39]>) (#<OBJECT-ID sysORID.7> #<OBJECT-ID udpMIB (50) [1]>) (#<OBJECT-ID sysORID.8> #<OBJECT-ID vacmBasicGroup (1) [0]>) (#<OBJECT-ID sysORDescr.1> "The SNMP Management Architecture MIB.") (#<OBJECT-ID sysORDescr.2> "The MIB for Message Processing and Dispatching.") (#<OBJECT-ID sysORDescr.3> "The management information definitions for the SNMP User-based Security Model.") (#<OBJECT-ID sysORDescr.4> "The MIB module for SNMPv2 entities") (#<OBJECT-ID sysORDescr.5> "The MIB module for managing TCP implementations") (#<OBJECT-ID sysORDescr.6> "The MIB module for managing IP and ICMP implementations") (#<OBJECT-ID sysORDescr.7> "The MIB module for managing UDP implementations") (#<OBJECT-ID sysORDescr.8> "View-based Access Control Model for SNMP.") (#<OBJECT-ID sysORUpTime.1> #<TIMETICKS (0) 0:00:00.00>) (#<OBJECT-ID sysORUpTime.2> #<TIMETICKS (0) 0:00:00.00>) (#<OBJECT-ID sysORUpTime.3> #<TIMETICKS (0) 0:00:00.00>) (#<OBJECT-ID sysORUpTime.4> #<TIMETICKS (0) 0:00:00.00>) (#<OBJECT-ID sysORUpTime.5> #<TIMETICKS (0) 0:00:00.00>) (#<OBJECT-ID sysORUpTime.6> #<TIMETICKS (0) 0:00:00.00>) (#<OBJECT-ID sysORUpTime.7> #<TIMETICKS (0) 0:00:00.00>) (#<OBJECT-ID sysORUpTime.8> #<TIMETICKS (0) 0:00:00.00>)))
Regards,
Chun Tian (binghe)