2017年3月

php版ping命令脚本

<?php
    ini_set("max_execution_time", '0');    //不超时
    $start = '192.168.0.1';
    $stop = '192.168.0.10';
    $overtime = '1000';
    $times = '1';
    function ping($start, $stop, $overtime, $times) {
        /*
         * ping命令检测存活主机
         * @param $start, $stop, $overtime, $times
                  起始ip  结束ip  超时     发包次数
         */
        preg_match('/^\w+\.\w+\.\w+\./', $start, $ip0);    //ip前缀
        preg_match('/\d+$/', $start, $ip1);
        preg_match('/\d+$/', $stop, $ip2);
        $ips = $ip2[0] - $ip1[0];
        echo 'live:<br />';
        for($ip1[0]; $ip1[0]<=$ip2[0]; $ip1[0]++) {
            $ip = $ip0[0].$ip1[0];
            $out = exec("ping $ip -n $times -w $overtime");
            //特征:100%丢包
            if(!strpos($out, '100%')) {
                echo $ip.'<br />';
            }
        }
        echo 'over';
    }
    ping($start, $stop, $overtime, $times);