#!/usr/bin/perl -w use strict; use lib '/home/perlsnapshot/perl5/lib/perl5'; use Path::Tiny; use DB_File; use WebService::Prowl; use File::Basename; my $in_file = "dnsmasq.leases"; my $db_file = "leases.dat"; my $API_KEY = "xxxxxxxxxxxxxxxxxxxxxxx"; my $APP_NAME = "Wifi watch"; tie my %leases, 'DB_File', $db_file; my $file = path( $in_file ); my %found = (); for my $line ( $file->lines ) { my( $secs, $mac, $ip, $name ) = split " ", $line; $found{ $mac } = 1; if( !exists $leases{ $mac } ) { $leases{ $mac } = "$ip $name"; notify( "joined: $leases{ $mac }" ); } } for my $mac ( keys %leases ) { if( !exists $found{ $mac } ) { notify( "left: $leases{ $mac }" ); delete $leases{ $mac }; } } untie %leases; ########################################### sub notify { ########################################### my( $event ) = @_; my $ws = WebService::Prowl->new( apikey => $API_KEY ); $ws->verify || die $ws->error(); $ws->add( application => $APP_NAME, event => $event, description => "Home Wifi clients", url => "", ); }