剔除不能使用IP的小脚本

该脚本把ping不通的IP去除。
use warnings;
#use strict;
use Net::Ping;

#default conf
my $conf = "/usr/local/squid/etc/cidrlist.conf";

$version = 1.0;
if(@ARGV > 0)
{
    if(@ARGV == 1 and !($ARGV[0] cmp "-v"))
    {
        print "IP detect Version: ", $version, "\r\n";
        exit;
    }
    elsif(@ARGV ==1 and !($ARGV[0] cmp "-h"))
    {
        print "Use \"ip_detect -v\" for version number.", "\r\n";
        print "Use \"-h\" for help.", "\r\n";
        exit;
    }
    elsif(@ARGV ==2 and !($ARGV[0] cmp "-f"))
    {
        $conf = $ARGV[1];
    }
    else
    {
        print "error argument.", "\r\n";
        print "Use \"ip_detct -h\" for help.", "\r\n";
        exit;
    }
}
open FH, $conf or die "can't open file $conf $!" ;
my $conf_tmp = $conf.".tmp";
open NEWFH,">$conf_tmp" or die "can't open file $conf_tmp";

while(<FH>)
{
    if(/^\s*#/)
    {
        print NEWFH $_;
        next;   
  }

    if(/^\s*$/)
    {
        print NEWFH $_;
        next;
    }

    if(/\S*start|end\S*/)
    {
        print NEWFH $_;
        next;
    }

    chomp;

    my $host = $_;

    $p = Net::Ping->new("icmp");

    if(!$p->ping($host,2)){
        print "$host is not ";
        print "reachable.\n";
    }
    else
    {
        print "$host is ";
        print "reachable.\n";
        print NEWFH $host."\n";
    }
    $p->close();
}


rename($conf_tmp,$conf) || die "rename $conf_tmp to $conf errori $!\n";

close FH;
close NEWFH;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值