dig域名

#!/usr/bin/perl

#use warnings;
use strict;
use Parallel::ForkManager;
use JSON::XS;
use Net::DNS::Nslookup;
use Net::Nslookup;
use POSIX qw(strftime);
use Digest::MD5;

`[ -d ./logs ] || mkdir logs`;
my $listPath = "./domain-list";
my $dropPath = "./domain-drop";
my $logsPath = "./logs/";

our $dmList = {};
our $time   = time;

open IN, "$listPath";
open my $DRP, "> $dropPath";
my  $pm = Parallel::ForkManager->new(50);
while (<IN>){
  my $res = $_;
  my $rr  = '';
  chomp $res;
  $pm->start and next;
     my @fields = split(",", $res);
     if(defined $fields[0] && defined $fields[1]) {
       my $domain = "$fields[0].lv$fields[1].cloudglb.com";      
       $rr = $fields[1] eq 3 ? getArr($domain) : getCname($domain);   
       print "==[$rr]=$domain==\n";
       if($rr eq 0){
          syswrite $DRP ,"${domain}\n";
       } 
     }
  $pm->finish;
}
$pm->wait_all_children;
close IN;
close $DRP;

dmJson("$dropPath");
my $toPost  = JSON::XS->new->encode($dmList);
open  OUT, "> ${logsPath}${time}";
print OUT $toPost;
close OUT;

my $tokenUrl = token(); 
print "==$tokenUrl==\n";
#`wget --post-file=${logsPath}${time} http://****/${tokenUrl}/  -SO /server/script/logs/out-$time`;

sub dmJson() {
  my   $dmFile = shift;
  open RES, "$dmFile";
  while (<RES>) {
    my $dmName = $_;
    chomp $dmName;
    next  if $dmName eq "";
    $dmList->{"$dmName"} = "${time}";
  } 
  close RES;
  return $dmList;
}

sub getCname {
    my $dmName = shift;
    my @digRes = nslookup(host=>$dmName, type=>"CNAME");
       return @digRes ? 1 : 0; 
}

sub getArr {
    my $dmName = shift;
    my $rr = Net::DNS::Nslookup->get_ips($dmName);
       return $rr eq '' ? 0 : 1;
}

sub token(){
  my $day = strftime "%Y%m%d", localtime(time);
  my $md5 = Digest::MD5->new;
     $md5->add('hello world!!!!!');
  my $tmd5= $md5->hexdigest;
     $md5->add("$day$tmd5");
  return $md5->hexdigest;

}

本文转自cloves 51CTO博客,原文链接:http://blog.51cto.com/yeqing/1681655


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值