perl检测网站首页状态代码,随便写的,一起交流
#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;
use Net::SMTP;
use POSIX qw/strftime/;
print <<EOF;
+--------------------------------------+
+----made by Henry He on 2011/03/03----+
+--------------------------------------+
EOF
my @array = ();
my $count = 0;
open FILE,'<','url.txt' or die "$!\n";
while (<FILE>) {
chomp;
/(\S+)/;
push @array,$1;
}
close FILE;
foreach my $url (@array) {
$count++;
my $obj = LWP::UserAgent->new(
keep_alive=>1,
timeout=>60);
my $req = HTTP::Request->new(GET=>"$url");
my $res = $obj->request($req);
if ($res->is_success) {
print $url,"\t",$res->status_line,"\n";
} else {
print "$url\tFailed:\t",$res->status_line,"\n";
sendemail("$url\tFailed:\t" . $res->status_line,"\n");
}
}
my $cur_time = strftime "%Y-%m-%d",localtime;
print "\n";
print <<EOF;
+-------------------------------------+
+ Finished check $count urls +
+-------------------------------------+
EOF
printlog("finished check $count urls at $cur_time...\n");
sub sendemail {
my $content = shift;
#change it for your smtp server
my $host = 'smtp.163.com';
#your email account here
my $mail_from = 'your_email_account';
#change it what you want to send here
#email subject
my $subject = 'Error Notice';
my $smtp = Net::SMTP->new($host,
Hello=>'localhost',
Timeout=>120,
Debug=>1
);
# modify it with your email username and password
$smtp->auth('your_email_username','your_email_password');
$smtp->mail($mail_from);
$smtp->to($mail_to);
$smtp->data();
$smtp->datasend("To: $mail_to\n");
$smtp->datasend("From: $mail_from\n");
$smtp->datasend("Subject: $subject\n");
$smtp->datasend("\n");
$smtp->datasend("$content\n\n");
$smtp->dataend();
$smtp->quit;
}
sub printlog {
my $str = shift;
open LOG,'>>','check_url_status.log' or die "$!\n";
print LOG "$str";
close LOG;
}
url.txt
code:
http://www.abc.com
http://www.test.com
http://www.xyz.com
…………………………
…………………………
…………………………
http://www.def.com
http://www.123.com
本文出自 “BSDerの” 博客,请务必保留此出处http://hellosa.blog.51cto.com/2698675/505781