我想写一个类似于Enterprise Network Console的PHP脚本,但是对于PC和设备的局域网而不是服务器的WAN。
我希望能够检查PC,复印机等是否已连接到网络。我想知道即使它们已关闭,但这是不可能的,因为PC会忽略数据包,除非它是一个唤醒lan数据包,对吗?
检查PC是打开还是关闭的最佳方法是什么?我使用fSocketOpen()
来测试服务器,但大多数PC都不是服务器。他们对ping有反应,但没有端口可以连接,这意味着PHP fSocketOpen()
不会工作但ping不行。
答案 0 :(得分:2)
您可以使用系统命令并捕获stdout以获得结果。
只需搜索PHP的popen(http://uk3.php.net/popen)示例。
echo run('ping 192.168.1.5');
function run($command) {
$command .= ' 2>&1';
$handle = popen($command, 'r');
$log = '';
while (!feof($handle)) {
$line = fread($handle, 1024);
$log .= $line;
}
pclose($handle);
return $log;
}