in reply to Re: Trouble with Array or ??
in thread Trouble with Array or ??
Well I thought I had some stuff figured out and after another 15 hours of reading/testing I haven't gotten much further.
I thought the ping part was working but now it seems intermittent, and I still can not get the foreach part to work. Basically I do not want to email a failure notive about the same failed ping to a host/IP until some time has passed, maybe 2-3 failures or something. While trying to ping once every 5 minutes. I have tried literally dozens of different ways to skip over the IP if it is on the email.list -- unless ($_ =~ my @eFile) -- was my last attempt but I can't get anything to work there.
Any assistance is appreciated, thanks Sam.
#!/usr/local/bin/perl use strict; use warnings; use Net::Ping; use Net::SMTP; my $from = 'from@email.com'; my $site = 'email.com'; my $smtp_host = 'smtp.email.com'; my $to = 'to@email.com'; my $smtp = Net::SMTP->new($smtp_host, Hello => $site); my $oFile = open(oFILE, ">", "output.file") or die("unable to write to + $!\n"); my $hFile = open(hFILE, "<", "host.file") or die("unable to open $!\n" +); my @ip_array = <hFILE>; chomp(@ip_array); my $eFile = open(eFILE, ">", "email.file") or die("unable to write to +$!\n"); my @efile = <eFILE>; chomp(@efile); sub email { $smtp->mail($from); $smtp->to($to); $smtp->data(); $smtp->datasend("To: $to\n"); $smtp->datasend("Subject: Ping failure notice.\n"); $smtp->datasend("\n"); $smtp->datasend("Ping failed on host $_\n"); $smtp->dataend; print eFILE ("$_\n"); } my $p = Net::Ping->new(); foreach (@ip_array) { if($p->ping($_)) { print oFILE ("$_ is responding to ping.\n"); } else { print oFILE ("$_ is NOT responding to ping.\n"); unless ($_ =~ my @eFile) { email(); } } } close(hFILE); close(oFILE); close(eFILE); $p->close(); $smtp->quit; #End of Code
The files I am using: --host.file-- www.cnn.com 127.0.0.1 10.10.10.1 178.23.1.2 9.1.1.1> --email.file-- <empty> --output.file-- <empty>
|
|---|