我從運行ifconfig命令的Linux機器獲取輸出。我通過運行shell_exec命令來完成。我找到了一個例子,但我似乎無法進一步處理它。PHP從複雜字符串中選擇文本
這是我現在的代碼。
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之後)的輸出很簡單; 192.168.1.1/127.0.0.1,因爲它有兩個網絡適配器,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)
我想獲得像,其次是RX字節,字節TX接口(eth0和LO)的名稱,與INET增加了沿(這是工作的話)。 如果名字太難得,那就這樣吧。但任何人都可以解釋我如何獲得RX字節和TX字節?
謝謝。
如果您有接口,您可以使用'cat/proc/net/dev'獲取您的設備列表和rec/tr字節統計信息,您可以使用'ip addr show eth0 | grep inet'來爲ip本身獲得一個簡單的解析字符串。 – Rufinus
[在Linux上獲取當前配置的網絡接口信息的問題]的可能重複(http://stackoverflow.com/questions/1656806/problem-with-getting-information-of-currently-configured-network-interfaces-on- l) –