in reply to Re: Conveting SNMP-returned ticks to
in thread Conveting SNMP-returned ticks to

Right! So am I to understand that the returned 'tick' time on my switch sysUpTime.0, is an entirely base 10 number, and not directly correlating to a "human time"? Or is there a formatting that can be resolved directly from it via DD:HH:MM:SS:.01(sec) or some such? Or do I need to chop off the last two digits (the partial seconds) and then start reverse engineering the base10 time back to a DD:HH:MM:SS format manually through division by 60, then 3600, etc.? Like: $uptime=returned SNMP value $humanuptime=$uptime/100 Thanks for responding!
  • Comment on Re: Re: Conveting SNMP-returned ticks to

Replies are listed 'Best First'.
Re: Re: Re: Conveting SNMP-returned ticks to
by DrManhattan (Chaplain) on Nov 27, 2001 at 01:35 UTC
    Right. It's just a count of the total number of ticks your device has been up. If the uptime is 2 seconds, sysUpTime.0 will be 200. You can extract a human readable number pretty easily with some math.
    #!/usr/bin/perl use strict; # Calculate ticks per second, minute, hour, and day my $TICKS_PER_SECOND = 100; my $TICKS_PER_MINUTE = $TICKS_PER_SECOND * 60; my $TICKS_PER_HOUR = $TICKS_PER_MINUTE * 60; my $TICKS_PER_DAY = $TICKS_PER_HOUR * 24; sub tick2time { my $ticks = shift; my $seconds = int($ticks / $TICKS_PER_SECOND) % 60; my $minutes = int($ticks / $TICKS_PER_MINUTE) % 60; my $hours = int($ticks / $TICKS_PER_HOUR) % 24; my $days = int($ticks / $TICKS_PER_DAY); return ($days, $hours, $minutes, $seconds); }

    -Matt

      Thanks! I actually figured out a solution like this:
      $uptime=$snmp->get("sysUpTime.0"); $uptime=localtime(time()-($uptime/100));
      For an "upsince" stamp...
      However, I like the granularity of your solution, so I think I'll plagiarize the heck out if it if you don't mind, as it'll give me a better timestamp for the HTML output.. Thanks!