【问题标题】:PHP Script to run arp command on linux machine to detect mac address of computers in LANPHP脚本在Linux机器上运行arp命令以检测局域网中计算机的mac地址
【发布时间】:2013-01-24 13:05:47
【问题描述】:

我需要在 linux 上运行 arp 命令或任何其他软件,它们可以显示在局域网有线连接中连接的计算机的所有 mac 地址的输出。此命令需要从 root 运行 apache。所以安全问题也很重要。

及时回复将不胜感激。

【问题讨论】:

    标签: php linux shell command arp


    【解决方案1】:

    两种方式使用php中的exec()命令直接执行请求。

    或者我要做的就是将 web 端与命令端完全分开。

    让 php 将命令“请求”写入数据库表。

    有一个 cron 脚本执行 php/perl/python 任何 bash 脚本/应用程序,它将请求从 db 运行哪个命令(如果运行指定命令,请检查请求是否挂起),然后将其结果写出来回到数据库中。

    然后让您的 php 网站显示输出。所以它会是这样的:

    请求(网络服务器)> 待处理的数据库 > cron 检查作业是否存在 > 如果作业存在执行请求的命令 > 返回数据数据库 > 网络服务器显示数据。

    如何通知最终客户端已返回结果取决于您我建议使用 iframe 或 ajax 检查查询以查看数据库中是否存在尚未“查看”的结果。例如,将您的 cron 作业设置为每 60 秒运行一次,这样从用户请求它到返回实际结果的时间不会超过 60 秒。

    【讨论】:

      【解决方案2】:

      你需要知道如何操作字符串!

      <?php
      
      exec("mylinuxcmd", $exitVals);
      
      ?>
      

      要运行命令,只需使用:

      其中 $exitVals 是 na 带有终端输出或“mylinuxcmd”的数组,每行输出存储在一个数组位置!

      这是一个捕获服务器 IP 并将其打印在屏幕上的示例:

      <?php
      
      // exec ifconfig linux command and catch exit on $arr
      exec("ifconfig", $arr);
      
      
      
      foreach($arr as $ar) {
      if(strstr($ar,'inet ')){
              if(!strstr($ar,'127.0.0.1')){
      
              $a = explode (' ',$ar);
              echo $a[1]."\r\n";
              }
      }
      
      }
      ?>
      

      根据你的系统 ifconfig,ip 可以在不同的地方,所以 $a[1] 可以是 $a[2],等等

      【讨论】:

        猜你喜欢
        • 2011-04-17
        • 1970-01-01
        • 1970-01-01
        • 2016-01-14
        • 1970-01-01
        • 2017-01-09
        • 1970-01-01
        • 1970-01-01
        • 2016-02-02
        相关资源
        最近更新 更多