perl脚本实时监测重要网络设备以及服务器的连通性

perl脚本实时监测重要网络设备以及服务器的连通性,第1张

perl脚本实时监测重要网络设备以及服务器的连通性

几个月前,我开始做一些与cacti相关的工作,应用cacti来监管一些关键的互联网设备及其网络服务器。Cacti是基于snmp协议来轮询和收集被监管设备的一些信息(总流量服务器空之间的应用状态)等。).但是,有时一些设备可能会报告snmp关闭,因为它们的轮询响应速度很慢,或者没有在要求的时间进行轮询,但事实并非如此。除了调整cacti本身的一些基本参数之外,perl脚本可以用于实时监控该设备的互联网连接

以下代码:

#!usr/bin/perl -w use Net::Ping;   #由于是一直检验因此标准一直为真 while(1){ $result='';  #用于纪录检测的結果 #iphost.txt文件储存了必须检验的设备ip,一行行载入设备的ip,启用测试函数开展检测,将回到的結果记下来 open(F,"iphost.txt"); while ($temp=<F>) {  $result=$result.&ping_test($temp); } close(F); #进行检测,輸出检测結果及其进行時间 print $result." "; print &get_time."  test finish"."\n";  #将每一次检测結果遮盖载入state.txt文件 open (FP,"<state.txt"); print  FP $result; close(FP); sleep(30); } #连接性测试函数,应用的是Net::ping控制模块 sub ping_test{ my($host)=@_; $count=0;#用于纪录ping堵塞的频次 $pingtool=Net::Ping->new("icmp"); #每一个设备的IP检测五次,假如ping堵塞,$count自增 for($j=0;$j<5;$j) {     if(!$pingtool->ping($host)){    $count; }    } #依据$count的值分辨是不是根据连接性检测,1意味着根据检测,0意味着没根据,5次ping检测都堵塞视作该设备连接性检测不通过 if($count==5){    $state=0; }else {    $state=1;  } $pingtool->close(); return $state; #$state纪录检测結果,并将其回到 } #获得获取当前时间的涵数 sub get_time{ my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(); my $date = ($mon1 .'/'. $mday); my $time = ($hour.":".$min); return $date." ".$time; }

被检测设备的ip及其检测结果分别存储在iphost.txt文件和其state.txt文件中,这样当需要检测额外的设备时,更改iphost.txt文件就可以了,然后检测数据会根据php显示在web端,并定期进行更新。php代码如下

<html> <head><meta http-equiv="refresh" content="120"></head> <title>关键互联网设备及其网络服务器连接性检测</title> </html> <?php //载入不久检测的結果 $state_file=file("c:/perllesson/state.txt"); foreach($state_file as $value){ $state=$value; } //载入被检测的设备ip $host_file=file_get_contents("c:/perllesson/iphost.txt"); $host=explode("\n",$host_file); //将結果輸出到报表,unreachable将显示信息为鲜红色 echo "<table border='1px' align='center' width='701080x'>"; echo "<tr><th>被测设备</th><th>情况</th></tr>"; for($i=0;$i<strlen($state);$i){    if($state[$i]==1){    echo "<tr align='center'><td>{$host[$i]}</td><td>reachable</td></tr>";    }else{    echo "<tr align='center' bgcolor='red'><td>{$host[$i]}</td><td>unreachable</td></tr>";    } } echo "</table>" ;  ?>

其实检测的代码比较简单,检测结果可以用cacti来区分设备是否正常运行,从而进一步提高检测的准确性。此外,在具体应用的整个过程中,还可以在perl脚本制作中添加邮件提醒和短信群发平台提醒。工作中遇到问题要积极改进思路。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/779943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存