PHP脚本在linux机器上运行arp命令来检测局域网中计算机的mac地址

时间:2013-01-24 13:05:48

标签: php linux shell command arp

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

提示回复将不胜感激。

2 个答案:

答案 0 :(得分:1)

执行此操作的两种方法是使用php中的exec()命令直接执行请求。

或者我要做的是将网络端与命令端分开。

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

有一个执行php / perl / python的cron脚本,无论什么bash脚本/应用程序将请求从db运行哪个命令(如果运行指定的命令,检查请求是否挂起)然后写出其结果集回到DB。

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

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

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

答案 1 :(得分:0)

您需要知道如何使用字符串!

<?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";
        }
}

}
?>

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