in reply to Re^3: Convert Octet String DateAndTime to printable string
in thread Convert Octet String DateAndTime to printable string

Hi One of the varbind of snmptrap carrying date and time in Octet String. When i am trying to ocnvert it into string i got value that is not macthing the data and time. "DateAndTime (Octet String) (SIZE(8|11))"
Here is my code


$octets="D8 06 01 01 27 3B 00 ";

@date = unpack 'n C6 a C2', $octets;

$datetime = sprintf "%04d-%02d-%02d %02d:%02d:%02d", @date; # no time zone

print $datetime

$datetime = sprintf "%04d-%02d-%02d %02d:%02d:%02d.%d%s%02d:%02d", @date; # with tz info
~
perl tt2.pl

17464-32-48 54:32:48

  • Comment on Re^4: Convert Octet String DateAndTime to printable string

Replies are listed 'Best First'.
Re^5: Convert Octet String DateAndTime to printable string
by rhesa (Vicar) on Jun 05, 2008 at 13:05 UTC
    Well, your $octets only has 7 bytes in it, so it wouldn't pass the specs of "either 8 or 11 octets". Fiddling with it a bit suggests you dropped a "07" from the start:
    # you presented the octets as a string of hex numbers. # I'll do the same, then strip out the spaces, and pack # it into binary format $octets = "07 D8 06 01 01 27 3B 00"; $octets =~ s/ //g; $octets = pack "H*", $octets; # now $octets is in a form as you would get back from snmp, # so we unpack with the template I gave earlier: @date = unpack 'n C6 a C2', $octets; # and print $datetime = sprintf "%04d-%02d-%02d %02d:%02d:%02d", @date; print $datetime;
    This prints: "2008-06-01 01:39:59".