1

我创建了一个数据库,用于跟上网络上的静态 IP 列表。我有一个按顺序列出 ips 的页面,我的脚本可以列出数据库中的 ips 和其他数据,但我想添加一个脚本来 ping 每个 ip 地址并判断它是否正常,这是我的代码必须显示所有内容:

$dbConn = connectToDb();

$sql= <<< END

SELECT *
FROM `ipadds` 
ORDER BY oct1 ASC, oct2 ASC, oct3 ASC, oct4 ASC;

END;

$result=mysql_query($sql) or die(mysql_error()); 



$options=""; 



while ($row=mysql_fetch_array($result)) {

    $oct1=$row['oct1']; 
    $oct2=$row['oct2']; 
    $oct3=$row['oct3']; 
    $oct4=$row['oct4']; 
    $SubnetMask=$row['SubnetMask']; 
    $Hostname=$row['Hostname']; 
    $MAC=$row['MAC']; 
    $Description=$row['Description']; 
    $DeviceType=$row['DeviceType']; 
    $Location=$row['Location']; 
    $Comments=$row['Comments']; 

    $options.="<tr><td><a href=editcomputer.php?queryID=$id><img src=images/edit.gif alt=print border=0></a> <a href=deletecomputer.php?queryID=$id><img src=images/edit-delete-icon.png alt=print border=0></a></td><td><a href='HTTP://$oct1.$oct2.$oct3.$oct4' target=_blank>$oct1.$oct2.$oct3.$oct4</a></td><td>$SubnetMask</td><td>$Hostname</td><td>$MAC</td><td>$Description</td><td>$DeviceType</td><td>$Location</td></tr>";

}
?> 
<center>

<font size=-1>

<img src="images/edit.gif"> - Edit Computer<br>

<img src="images/edit-delete-icon.png"> - Delete Computer<br>

</font>

<font size="2">

<table>

<tr>

<td>

<hr>

</td>

</tr>
<table cellpadding="15" border="1">
<tr>
<td>

</td>
<td>
<u>IP Address</u>
</td>
<td>
<u>Subnet Mask</u>
</td>
<td>
<u>Hostname</u>
</td>
<td>
<u>MAC Address</u>
</td>
<td>
<u>Description</u>
</td>
<td>
<u>Device Type</u>
</td>
<td>
<u>Location</u>
</td>

<?=$options?>
</table>

我想在我的表中添加另一行并将其作为向上或向下的“状态”,有什么建议吗?

我找到了这段代码,它完全可以自己工作,我指定了地址,但无法在我的“while”语句中工作:

function pingAddress($ip) {
    $pingresult = exec("ping -n 3 $ip", $outcome, $status);
    if (0 == $status) {
        $status = "alive";
    } else {
        $status = "dead";
    }
    echo "The IP address, $ip, is  ".$status;
}

pingAddress("ip addres of host here");
4

1 回答 1

1

不用说你不应该使用mysql_*函数(哎呀,我刚刚做了),你所要做的就是改变你的函数以返回一个值:

function pingAddress($ip) {
    $pingresult = exec("ping -n 3 $ip", $outcome, $status);
    if (0 == $status) {
        return true;
    } 
    return false;
} 

然后在你的循环中:

while ($row=mysql_fetch_array($result)) {
    [...]
    if (pingAddress($ip) === true) {
        // IP is up
    }
    else {
        // IP is down
    }
}
于 2012-09-07T03:43:15.147 回答