域名ip对应快速测试

说明:
正常web服务器下都会有多个域名,少则几个,多则上百。如果服务器ip更换,我们应该如何快速批量测试域名跟ip的对应关系呢?
本文通过createip.php在web服务器各站点根目录新建ipcheck.php文件,ipcheck.php打印出服务器ip;然后在任意台服务器上执行php checkip.php,通过域名去访问前面生成的ipcheck.php,检查域名跟新ip是否对应。
这边说明下,我站点目录是以/www/一级域名/二级域名方式存放的,如mail.coolnull.com域名,则站点目录为/www/coolnull.com/mail这样的格式

实现:
一.createip.php部份,通过执行/usr/local/php/bin/php /shell/createip.php,在各个域名站点根目录下生成ipcheck.php文件,ipcheck.php内容如下:

# less createip.php   //createip.php内容如下
read()))
{
    #echo $www.$entry."\n";
    if($entry!='.' && $entry!='..' && is_dir($www.$entry))
    {
        $d1 = dir($www.$entry.'/');
        while (false !== ($entry1 = $d1->read()))
        {
            if($entry1!='.' && $entry1!='..' && is_dir($www.$entry.'/'.$entry1))
            {
                echo $www.$entry.'/'.$entry1.'/ipcheck.php'."\n";
                file_put_contents($www.$entry.'/'.$entry1.'/ipcheck.php','');
            }
        }
    }
    else
    {
        continue;
    }
}
$d->close();
?>

 
二.checkip.php部份,在任意台服务器上新建checkip.php。$all = array定义域名与ip关系,多ip的以;分隔

# cat /shell/checkip.php
#!/usr/local/php/bin/php
$a[$i],'has'=>0);
        array_push($tmp['ip'],$tmpip);
    }
    array_push($urls,$tmp);
}

define('LOGFILE','checkip.log');
if(file_exists(LOGFILE))
{
    rename(LOGFILE,LOGFILE.'.'.date('YmdHis'));
}
/*
print_r($urls);
exit;

$urls = array();
    $tmp = array();
    $tmp['url'] = 'gamepay.geekoom.com';
    $tmp['ip'] = array();
        $tmpip = array('ip'=>'117.27.152.24','has'=>0);
        array_push($tmp['ip'],$tmpip);
        $tmpip = array('ip'=>'117.27.152.120','has'=>0);
        array_push($tmp['ip'],$tmpip);
array_push($urls,$tmp);
*/

foreach($urls as &$v)
{
    for($i=0; $i<10; $i++)
    {
        $ip = file_get_contents('http://'.$v['url'].'/ipcheck.php?'.rand(0,10000));
        if(strlen($ip)>20)
        {
            errors($ip);
            errors($v['url']); 
            
            exit;
        }
errors($v['url'].'=>'.$ip."\n");
        $v = checkip($v,$ip);
    }
}

errors(print_r($urls,true));

function checkip($url,$ip)
{
    $err = true;
    foreach($url['ip']  as &$v)
    {
        if($v['ip']==$ip)
        {
            $err = false;
            $v['has']++;
        }
    }
    if($err)
    {
        if(is_array($url['error']))
        {
            if(!in_array($ip,$url['error']))
            {
               array_push($url['error'],$ip);
            }
        }
        else
        {
            $url['error'] = array();
            array_push($url['error'],$ip);
        }
    }
    return $url;
}

function errors($log)
{
    echo $log."\n";
    @error_log($log.chr(13).chr(10),3,LOGFILE);
}
?> 

 
三.最后,执行checkip.php查看当前目录下的日志信息即可!

# php checkip.php

 
结果:
# less checkip.log //测试结果会如下所示,如果同一域名有多个ip,程序会分别测试

www.coolnull.com=>222.222.222.222

www.coolnull.com=>111.111.111.111

www.coolnull.com=>111.111.111.111

www.coolnull.com=>111.111.111.111

www.coolnull.com=>222.222.222.222

www.coolnull.com=>222.222.222.222

www.coolnull.com=>111.111.111.111

www.coolnull.com=>222.222.222.222

www.coolnull.com=>111.111.111.111

www.coolnull.com=>222.222.222.222

Array
(
    [0] => Array
        (
            [url] => www.coolnull.com
            [ip] => Array
                (
                    [0] => Array
                        (
                            [ip] => 117.27.139.153
                            [has] => 5
                        )

                    [1] => Array
                        (
                            [ip] => 117.27.139.154
                            [has] => 5
                        )

                )

        )

)

 
附录:
暂空!

发表评论

邮箱地址不会被公开。 必填项已用*标注