{S0}简介
得到通知,如果您的网站关闭或缓慢。它的作用
这个简单的Perl脚本设计上运行的时间表。如果你在Windows上,你可以使用Windows任务调度,如果你在Linux上,你可以作为一个cron作业运行调度。该脚本会检查一个网站,实际上是"抢"的默认页面,然后记录这需要多久。然后,您可以收到一封电子邮件,如果页面是关闭,或者如果响应时间是大于你设置。它是如何工作
该脚本有3个文件。URLS.txt - 这个文件包含的所有URL(网站),你想检查。每个URL一行。这使得很容易地更新和改变,而无需挖成Perl脚本的列表。SMTP_Settings.txt - 这个文件包含该脚本应该使用发送的通知,以及谁把它发送到SMTP设置。同样,这些设置位于在一个文本文件中的脚本,使事情变得更容易改变。responser.pl - 检查网站,并试图抢默认的文件的任务的脚本。你需要设置最小响应时间,是可以接受的范围内脚本本身。请记住,如果你正在运行的脚本,从连接速度很慢,你也可能打你的响应时间限制,由此而引发的电子邮件。
由脚本创建的其他文件:
该脚本将创建一个错误文件,其中任何报告的错误被写入。这是方便进行故障排除,该文件可以随时删除。
该脚本将创建一个每天的日志文件,它的运行时间。每天的日志文件将追加,所以每一天,你就会有一个发生了什么记录。
的自述文件的完整脚本可以免费从下载。从日志文件的示例输出:******************************************* *********** -------------------------------------------------- ------------------------------|时间:23时26分31秒||主机状态响应| -------------------------------------------------- ------------------------------| http://www.yahoo.com/响应1秒| http://www.hotmail.com/响应1秒| http://www.ebay.com/响应1秒| http://www.example.com/响应0秒|| http://www.not/一个真正的site.com错误/一个|
160;-------------------------------------------------- ------------------------------|时间:23时30分十七秒||主机状态响应| -------------------------------------------------- ------------------------------| http://www.yahoo.com/响应0秒|| http://www.hotmail.com/响应0秒|| http://www.ebay.com/响应1秒
| http://www.example.com/响应0秒|| http://www.not/一个真正的site.com错误/一个| -------------------------------------------------- ------------------------------|时间:23时31分26秒||主机状态响应| -------------------------------------------------- ------------------------------| http://www.yahoo.com/响应0秒|| http://www.hotmail.com/响应1秒| http://www.ebay.com/响应0秒|| http://www.example.com/响应0秒|| http://www.not/一个真正的site.com错误N / A |#/ USR / BIN / perl的使用警告;使用严格的;使用领带::文件;使用Net::SMTP;使用LWP::的UserAgent;################################################## ################程序设置#我error_log中="Responser_errors.txt";#文件来存储程序错误我的$输入档案='urls.txt";#从程序将读取网页地址我smtp_file ='SMTP_Settings.txt";#SMTP设置文件我response_limit美元= 12;##秒积极diggit - > Sendmail的;
0; #0 - >将不能发送邮件我send_mail = 1;#$ send_mail = 1; - > SMTP选项为ON,
160; #$ send_mail = 0; - > SMTP选项为OFF################################################## #################设置的完#不要编辑娄,如果你不明白它。################################################## ################死"的文件input_file是不存在\ N"除非(E $输入档案);死"SMTP已打开,但文件$ smtp_file是不存在的\ N"除非(E $ smtp_file);我的本地时间=本地时间;@我们的错误;我(美元一天,美元一个月,$日期,小时美元,为一年)=分裂/ \ S /标LocalTime设置;我output_file ='报告'$日期.'.'.$月.'.'.$一年。"TXT';我($ smtp_host,$收件人,reverse_path,all_addr)=();,"领带领带@:文件'all_addr $输入档案或错误("斜面开放输入档案读取地址");(- E $ output_file){ 开放(">> $ output_file") 或错误("斜面打开存在的文件追加output_file");}否则{ 开放("> $ output_file") 或错误("斜面打开新文件$ output_file书面方式");}我@ smtp_settings;如果($ ^ O =〜/ WIN / I){ 领带@ smtp_settings,"领带::文件',smtp_file美元,
0;recsep =>"\ 012" 或错误("斜面开放smtp_file读SMTP设置");}否则{领带@ smtp_settings,"领带::文件',smtp_file美元,autochomp => '0' 或错误("斜面开放smtp_file读SMTP设置");}(@ smtp_settings){ 的Chomp; 未来如果/^#/; #未来如果/^$/; (/ ^(\ W)\ S = \ S"(\ S)'/){ 美元smtp_host = 2美元(1美元EQ"SMTPHost');
60;美元收件人= $ 2(1美元EQ"收件人"); $ reverse_path = $ 2(1美元EQ"反'); }}打印出的"\ n".('-' × 84)。 "\ N"打印出"|",""× 30",时间:美元小时",""X 40"| \ N";打印出× 10 "|",'","主","'× 37'状态',''× 7,
60; "响应| \ N";打印出"".('-' × 84)。 "\ N";(0 .. $#all_addr){ 印章美元all_addr [$ _]($ all_addr [$ _] =〜/ \ S /美元); 未来如果($ all_addr [$ _] EQ""); 如果($ all_addr [$ _] =〜/ ^ HTTP:\ / \ / \ \ \ W {2,4} $ /){ #地址以http://开始,未来一些字符串 #完成点和2到4个字母 check_url($ all_addr [$_]);#调用子程序check_url() }否则{ 我out_format = sprintf的"|%- 50.50s%%- 10S - 20S | \ N",
60; 美元all_addr [$_],"错","N / A"; printf的输出out_format美元; printf的美元out_format; 推@个错误,"$ all_addr [$ _]是错误的地址。"; }}我ERR =加入"\ 015 \ 012",@个错误;我err_num美元=标量@个错误;#如何匹配错误的网站有send_mail = 0,除非美元err_num;解开@ all_addr或错误("无法关闭文件为输入档案");(元send_mail) 我的SMTP =净:SMTP - >新($ smtp_host &
#160; 调试=> 1,
160; 超时=> 20,
; 您好=>"$ smtp_host")
或错误("斜面连接到$ smtp_host");#开始比较邮件我味精=邮件("$ reverse_path")
160;或错误("无法指定一个反向路径");#如果一切正常 美元SMTP ->(收件人) 或错误("指定收件人失败");#将 SMTP ->数据([味精])
0; 或错误("发送消息失败");#发送邮件 SMTP ->退出或错误("无法退出");#以您}否则{ 打印"发送邮件是关\ n",如果美元err_num#如果你不想接收邮件关闭了或错误("无法关闭文件$ output_file");打印的"\ nProcess FINISH \ N";分check_url {#子程序检查给定的URL 我的目标= $ _ [0];
0;我UA = LWP::的UserAgent ->新; UA ->代理("$ 0/0.1"UA ->代理。); 我REQ = HTTP:请求(GET =>"目标");
60; REQ ->头("接受"=>"文本/ html");#接受HTML页 #发送请求
160; 我开始=时间;#开始计时 我RES = $ UA请求(REQ); #检查结果
0; ($ RES -> is_success){
160; #成功....所有的网页内容已收到
60; 我的时间=时间;#定时器
0;美元out_format; 时间=($ - $开始);#定时器结果 (response_limit $(response_limit status_line美元)
或错误("无法推动下来的错误"); 打印出$ out_format;#写入文件 打印$ out_format;#打印到控制台 }}分错误{#子程序在错误日志打印 我的$ ERROR_MSG =转变; 开放的错误,">> $ error_log中" 或死"无法打开日志文件$ error_log中:$ \ N"; 打印错误"$ LocalTime设置\:$ ERROR_MSG:$ \ N"; 关闭ERR或死亡"不能关闭日志文件$ error_log中:$ \ N";}