[英]How to get a list of active network interfaces in php
所以我想要的是通過使用套接字函數的php獨立實現此目的-
$ sudo ifconfig | cut -d " " -f1 | awk 'NF==1{print $1}'
eth0
lo
wlan0
我知道我可以使用system
命令來做到這一點,但是為此我需要更改ifconfig (root privelaged command)
上的粘位權限,或者需要編寫C包裝程序。
因此,請告訴我通過PHP實現此目標的最佳方法。
我的目的是使用使用HTML和PHP開發的應用程序向前端用戶顯示可用的網絡接口列表。
在基於Debian的發行版上,您可以使用我編寫的該庫。 它可以讀/寫/ etc / network / interfaces
https://github.com/carp3/networkinterfaces
<?php
//include composer autoloader
include 'vendor/autoload.php';
// 'import' NetworkInterfaces class
use NetworkInterfaces\Adaptor;
use NetworkInterfaces\NetworkInterfaces;
// create new handle from /etc/networking/interfaces
$handle = new NetworkInterfaces('/etc/networking/interfaces');
// parse file
$handle->parse();
// print all adaptors
var_dump($handle->Adaptors);
您可以將您的網絡服務器以(通常是www或www-data)身份運行的用戶添加到/etc/sudoers
。 然后,您應該能夠通過系統調用訪問ifconfig命令。 顯然,這會對安全造成影響。 如果采用該路由,則應限制對ifconfig命令的訪問。
$out = system("sudo ifconfig ...");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.