ifconfig コマンドを実行している Linux ボックスから出力を取得しています。shell_exec コマンドを実行してこれを行います。例を見つけましたが、それ以上作業できないようです。
これが私の現在のコードです。
public function get_network_interfaces() {
// Run the command.
$cmd_exec = shell_exec("/sbin/ifconfig");
// Get the pattern.
$pattern = '/inet addr:([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})/';
if (preg_match_all($pattern, $cmd_exec, $matches)) {
$interfaces = $matches[1];
return $interfaces;
}
}
これの出力 (foreach'ing 後) は次のとおりです。192.168.1.1/127.0.0.1 には 2 つのネットワーク アダプターがあるため、ifconfig の出力は次のようになります。
eth0 Link encap:Ethernet HWaddr 00:16:3e:38:b8:1c
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: 2a02:2308::216:3eff:fe38:b81c/64 Scope:Global
inet6 addr: fe80::216:3eff:fe38:b81c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10612623 errors:0 dropped:0 overruns:0 frame:0
TX packets:151855 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:539434883 (514.4 MiB) TX bytes:37861938 (36.1 MiB)
Interrupt:30
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:6662 errors:0 dropped:0 overruns:0 frame:0
TX packets:6662 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:768641 (750.6 KiB) TX bytes:768641 (750.6 KiB)
私が取得しようとしているのは、インターフェイスの名前 (eth0 と lo) と、inet の追加 (既に機能しています) の後に RX バイトと TX バイトが続くようなものです。名前を取得するのが難しすぎる場合は、そうしてください。しかし、誰かが RX バイトと TX バイトを取得する方法を説明できますか?
ありがとう。