[freeside-commits] freeside/bin ping,NONE,1.1
Ivan,,,
ivan at wavetail.420.am
Thu Mar 19 19:14:19 PDT 2009
Update of /home/cvs/cvsroot/freeside/bin
In directory wavetail.420.am:/tmp/cvs-serv20863
Added Files:
ping
Log Message:
adding quick remote ping & alert script, RT#4610
--- NEW FILE: ping ---
#!/usr/bin/perl
use Net::Ping;
use Net::SSH qw( ssh_cmd );
use Email::Send;
my @other_hosts = ( 'freeside.biz', 'saturn5.com' );
my( $machine, @emails ) = @ARGV;
die "no notification email given" unless @emails;
my $ping = new Net::Ping; # 'icmp'; #requires root
my $pong = '';
# can't tcp ping... $ping->ping($machine) and
$pong = eval { ssh_cmd('freeside@'.$machine, 'echo pong') };
#(command ignored if authorized_keys setup w/command=)
if ( $@ || $pong !~ /pong/ ) { #houston, we may have a problem
#warn "can't reach $machine, checking @other_hosts\n";
#let's do a sanity check, can we see some other hosts?
exit unless grep $ping->ping($_), @other_hosts;
#uh-oh, this is bad.
#warn "checking to see if we've alerted on this recently\n";
#but we don't want to be too noisy, have we alerted on this in the last 24h?
my $file = "/tmp/alert-$machine";
exit if -e $file && -M $file < 1;
open(FILE, ">>$file");
print FILE "emailing\n";
close FILE;
#warn "emailing alerts\n";
foreach my $email ( @emails ) {
my $message = <<"__MESSAGE__";
From: support\@freeside.biz
To: $email
Subject: ALERT - $machine
ALERT: $machine appears to be down.
__MESSAGE__
my $sender = Email::Send->new({mailer => 'SMTP'});
$sender->mailer_args([Host => 'mail.freeside.biz']);
$sender->send($message);
}
}
More information about the freeside-commits
mailing list