Hello,

I'm trying to write an extension module for snmpd, and decided to use
the pass_persist mechanism. I can get it to successfully return values
as long as they are numbers or strings (e.g. integer, string,
Counter32, DisplayString), but I cannot figure out how to return a
DateAndTime (from RFC 2579: http://tools.ietf.org/html/rfc2579 ).

The RFC indicates that DateAndTime is an octet-string of length 8 or
11. However, the pass_persist mechanism is text based - in that we
write the return value to stdout followed by a newline - so I cannot
see how it can reliably return the raw octet-string i.e. how can it
distinguish between a byte with a value 10 and the newline char? I was
hoping that I could output the DateAndTime as text in the display-hint
format (e.g. "yyyy-mm-dd,hh:mi:ss.d+00:00") but this doesn't work; the
output from smnpget is nonsense.

I have also tried writing the raw bytes to stdout, but this doesn't
seem to work either (snmpd seems to send a blank line to halt the
pass_persist script).

I'm currently testing under net-smnp 5.4.2.1, and my script is a
python 2.6 script. I will be deploying under net-snmp 5.2.3 and python
2.4.

This is the output from snmptranslate, to show you the MIB I'm using
for snmpget:

snmptranslate -m +KORDIA-FMS-WATCHDOG -IR -Tp enterprises.kordia
No log handling enabled - turning on stderr logging
Cannot find module (NET-SNMP-VACM-MIB): At line 2 in (none)
+--kordia(38086)
   +--fms(1)
      |
      +--fmsVendors(1)
      |  |
      |  +--fmsHp(1)
      |  |
      |  +--fmsMotorola(2)
      |
      +--fmsWatchdog(2)
         +-- -R-- EnumVal   fmsWatchdogStatus(1)
         |        Values: ok(0), unreachable(1)
         +-- -R-- Counter   fmsWatchdogFailedDriverCount(2)
         +-- -R-- Counter   fmsWatchdogLateDriverCount(3)
         |
         +--fmsWatchdogDriverStatusTable(4)
            |
            +--fmsWatchdogDriverStatusEntry(1)
               |  Index: fmsWatchdogDriverIndex
               |
               +-- -R-- INTEGER   fmsWatchdogDriverIndex(1)
               +-- -R-- String    fmsWatchdogDriverName(2)
               |        Textual Convention: DisplayString
               |        Size: 0..255
               +-- -R-- EnumVal   fmsWatchdogDriverStatus(3)
               |        Textual Convention: FmsWatchdogDriverStatus
               |        Values: ok(0), late(1), failed(2)
               +-- -R-- Counter   fmsWatchdogDriverDuration(4)
               +-- -R-- String    fmsWatchdogDriverTimestamp(5)
                        Textual Convention: DateAndTime
                        Size: 8 | 11

(I could include the MIB itself but this seems just as informative and
a lot smaller.)

How should I marshal DateAndTime values? Is there some other type I
can use instead? I see the TimeStamp type in RFC 2579, but this is the
sysUpTime value at the event time; I'd rather have an absoluate (UTC)
date and time, or some equivalent.

Alistair

------------------------------------------------------------------------------
Special Offer -- Download ArcSight Logger for FREE!
Finally, a world-class log management solution at an even better 
price-free! And you'll get a free "Love Thy Logs" t-shirt when you
download Logger. Secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsisghtdev2dev
_______________________________________________
Net-snmp-users mailing list
Net-snmp-users@lists.sourceforge.net
Please see the following page to unsubscribe or change other options:
https://lists.sourceforge.net/lists/listinfo/net-snmp-users

Reply via email to