当前位置: 首页 > 面试题库 >

使用PHP ping IP地址并回显结果

左康安
2023-03-14
问题内容

我有以下功能,到目前为止我还无法使用。我想ping一个IP地址,然后回显该IP是否有效。

function pingAddress($ip){
    $pingresult = shell_exec("start /b ping $ip -n 1");
    $dead = "Request timed out.";
    $deadoralive = strpos($dead, $pingresult);

    if ($deadoralive == false){
        echo "The IP address, $ip, is dead";
    } else {
        echo "The IP address, $ip, is alive";
    }

}

当我使用示例调用此函数时:

pingAddress("127.0.0.1")

无论如何,回声结果总是“死”。

有人可以帮我解决我的问题吗?和/或是否有更好的方法可以达到相同的效果?

非常感谢。

更新:修改了代码以包括双引号,但仍然得到相同(不正确)的结果。


问题答案:

注意:以下解决方案在Windows上不起作用。 在linux exec上,从控制台执行“ which
ping”命令,并相应地设置(建议的exec调用的)命令路径

我认为您想检查命令的退出状态,而shell_exec为您提供完整的输出(出于某种原因,命令输出在命令版本之间更改可能会很危险)。此外,您的变量$
ip不会在单引号内解释。您必须使用双引号“”。那可能是您唯一需要修复才能使其正常工作的东西。

但是我认为以下代码可能更“便携”。恕我直言,实际上最好是捕获退出状态,而不是尝试解析结果字符串。恕我直言,最好指定ping命令的完整路径。

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

pingAddress("127.0.0.1");


 类似资料:
  • 7. 回调地址管理 用于管理回调的地址,在该页面可设置相关信息:

  • 当我尝试使用Google geocode api对其中一个地址进行地理编码时,Google api返回了一个错误的位置。 搜索地址:爱沙尼亚共和国 结果来自google api:西班牙 我正在使用javascript Google api对地址进行地理编码。对于其他位置,结果是正确的,但对于上述地址,结果是不正确的。 如果我们在浏览器中输入下面的url,我们会得到JSON,它会在西班牙的某个地方显

  • 我遵循本教程https://dev.outlook.com/restapi/tutorial/java为了遍历创建一个简单的JavaSpring MVC应用程序的过程,该应用程序检索Office 365或Outlook.com.中的消息 到目前为止我做了什么: < li >在AZURE-365-MAIL-API注册上注册了我们的应用程序 < li >在我的应用程序中使用了appId、appPass

  • 问题内容: 我对s 有一个基本问题,并试图了解以下两个不同的输出,以获取两个切片的后备数组元素的地址: 上面的代码片段返回: 但是,请考虑以下略有变化的代码段: 上面的代码片段返回: 有人可以解释上述差异的原因吗?谢谢! [跟进] 进行以下修改: 仍返回相同的输出: 尽管取消注释方法调用,但返回: 问题答案: 在深入研究之前,请了解根据规范,程序对于大小为零的值产生的地址是否相等或不同,都是正确的

  • 回调相关 备注: 1. 视频转码回调,是以GET请求的方式通知到客户 2. 除了视频转码回调以为,其余均以POST JSON 请求的方式通知到客户 3. 回调相关的配置在CC账户 admin/云课堂/回调地址管理 进行设置 说明: 1.开始/结束直播回调 回调数据中type字段标识开始直播/结束直播, type为start_live为开始直播,type为end

  • 我有一个运行WebIOPi的覆盆子Pi,它连接到一个中继板,通过基于网络的界面打开和关闭东西。下面是浏览器中的界面: 一切都很好,但我想创建一个android应用程序,只需通过WebView显示基于Web的界面。我以前用过WebView,它看起来很简单,但我不能让它工作。 下面是我的代码: 我补充道: 到舱单上。