#!/usr/bin/perl # reads hilis3 conversion log, checks last line = 'Process ran ...' use strict; use warnings; BEGIN { use FindBin qw($Bin); # warn $Bin; use lib "$Bin/../../../lib"; use lib '/home/raj/perl5/lib/perl5'; } use IO::All; use Data::Dumper; use File::ReadBackwards; # not used directly but IO::All::tail needs it use Mail::Sendmail 0.79; # needs authentication functions my $log_file = '/home/raj/cron/hilis.log'; my $io = io $log_file; exit unless $io->size; # skip empty file # get last 2 lines (last line maybe a blank): my @last_lines = $io->tail(2); # warn Dumper \@last_lines; exit; alert_admin() if (! grep { $_ =~ /^Process ran/ } @last_lines); sub alert_admin { my %mail = ( From => 'hmds.lth@nhs.net', To => 'ra.jones@hmds.org.uk', Subject => 'HILIS3 CONVERSION FAILED', Message => "Last lines:\n@last_lines", SMTP => 'smtp.titaninternet.co.uk', Auth => { method => 'DIGEST-MD5 LOGIN PLAIN', user => 'ra.jones@hmds.org.uk', password => 'tetramor', }, ); # warn Dumper \%mail; sendmail(%mail); }