您的位置:首页 > 其它

简练的端口扫描脚本

2014-11-26 11:57 351 查看
脚本名:monitor_port.pl
作用:扫描特定端口是否正常
脚本:
#!/usr/bin/env perl

($sec,$min,$hour,$mday,$mon,$year) = (localtime)[0..5];
($sec,$min,$hour,$mday,$mon,$year) = (
sprintf("%02d", $sec),
sprintf("%02d", $min),
sprintf("%02d", $hour),
sprintf("%02d", $mday),
sprintf("%02d", $mon + 1),
$year + 1900
);

$date="$year-$mon-$mday $hour:$min:$sec";

##########################################################
open (FH,"/opt/monitor/port.list") || die;
while (defined($port_tn=<FH>)) {
($host_ip,$mod_n,$port_t,$port_n)=split(/\t/,$port_tn);
chomp $host_ip;
chomp $mod_n;
chomp $port_t;
chomp $port_n;
ch_result();
}

####################################################
sub ch_result {

open LOG,">>/opt/monitor/port_status.log";
select LOG;

if($port_t eq 'tcp'){
`/usr/bin/nc -z -w2 $host_ip $port_n`;
$flag = `echo $?`;
}else{
`/usr/bin/nc -u -z -w2 $host_ip $port_n`;
$flag = `echo $?`;
}

###########################
if($flag != 0){
print "$date $host_ip $mod_n $port_t $port_n is closed!\n";
}
close(LOG);
}
文件1、port.list 定义要扫描的端口内容,
eg:
172.16.2.2      httpd     tcp     80
172.16.2.2      tomcat     tcp     8080
文件2、port_status.log 记录端口失败信息
eg:
2014-11-25 20:30:01 172.16.2.2 httpd tcp 80 is closed!
2014-11-25 20:30:01 172.16.2.2 tomcat tcp 8080 is closed!
使用方法:
只要将此脚本添加到crontab即可!
*/5 * * * * cd /opt/monitor; ./monitor_port.pl > /dev/null 2>&1


本文出自 “大風” 博客,请务必保留此出处http://lansgg.blog.51cto.com/5675165/1582720
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: