#!/usr/bin/perl -w ########################################### # Mike Schilli, 2006 (m@perlmeister.com) ########################################### use strict; use WatchLAN; use Mail::Mailer; use Cache::File; use Template; my $cache = Cache::File->new( cache_root => "$ENV{HOME}/.arpemail"); my $events = WatchLAN::Activity::Manager-> get_activity( with_objects => [ 'device', 'ip_address' ], query => [ "t2.name" => undef ], sort_by => ['minute'], ); $events = [ grep { my $mac = $_->device()->mac_address(); !$cache->get($mac) && ($cache->set($mac, 0) || 1); } @$events ]; exit 0 unless @$events; my $mailer = new Mail::Mailer; $mailer->open({ 'From' => 'me@_foo.com', 'To' => 'oncall@_foo.com', 'Subject' => "*** New MAC detected ***", }); my $t = Template->new(); $t->process( \*DATA, { events => $events }, $mailer ) or die $t->error(); close($mailer); __DATA__ [% FOREACH e = events %] When: [% e.minute %] IP: [% e.ip_address.string %] MAC: [% e.device.mac_address %] [% END %]