#!/usr/bin/perl -w ########################################### # Mike Schilli, 2006 (m@perlmeister.com) ########################################### use strict; use WatchLAN; my $reachback = DateTime ->now( time_zone => "local" ) ->subtract( minutes => 60 * 24 ); my $events = WatchLAN::Activity::Manager-> get_activity( query => [ minute => { gt => $reachback }, ], sort_by => ['minute'], ); my %latest = (); for my $event (@$events) { $latest{$event->device_id()} = $event; } for my $id (keys %latest) { my $event = $latest{$id}; my $name = $event->device()->name(); $name ||= "unknown (id=$id)"; printf "%23s: %s ago\n", $name, time_diff($event->minute()); } ########################################### sub time_diff { ########################################### my ($dt) = @_; my $duration = DateTime->now( time_zone => "local" ) - $dt; for (qw(hours minutes seconds)) { if(my $n = $duration->in_units($_)) { my $unit = $_; $unit =~ s/s$// if $n == 1; return "$n $unit"; } } }