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 
    my $mail_to = 'abc@abc.com'; 
    #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