首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Linux上当前配置的网络接口信息时出现问题

获取Linux上当前配置的网络接口信息时出现问题
EN

Stack Overflow用户
提问于 2009-11-01 18:16:06
回答 2查看 1.6K关注 0票数 0

在尝试仅获取Linux计算机上当前配置的网络接口的名称时,我遇到了字符串格式化问题。

代码语言:javascript
复制
1. <?php
2. $temp = shell_exec("/sbin/ifconfig | cut -b 1-10");
3. echo $temp;                           //Outputs: eth0 lo
4. $arr = explode(" ",$temp);
5. echo "First Location:".$arr[0];         //Outputs: eth0
6. echo "Second Location:".$arr[1];        //Outputs:    
7. echo count($a);                       //Outputs: 165
8. ?>

如何获取size=2的$arr以使echo $arr;//提供'eth0‘echo $arr1;//提供'lo’

非常感谢

更新:我认为下面的命令会对我产生魔力

代码语言:javascript
复制
ifconfig | grep -o -e "[a-z][a-z]*[0-9]*[ ]*Link" | perl -pe "s|^([a-z]*[0-9]*)[ ]*Link|\1|"

但是当我从一个php文件执行它时,我做了一些错误的事情,因为浏览器没有显示任何东西。

代码语言:javascript
复制
<?php    
$temp = shell_exec("ifconfig | grep -o -e \"[a-z][a-z]*[0-9]*[ ]*Link\" | perl -pe \"s|^([a-z]*[0-9]*)[ ]*Link|\\1|\"");
echo $temp;
?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-01 18:26:11

请注意,您应该检查返回值以确保调用成功退出,但基本上可以这样做:

代码语言:javascript
复制
exec('/sbin/ifconfig -s|awk \'{print $1}\'', $interfaces, $returnValue);
array_shift($interfaces);
票数 1
EN

Stack Overflow用户

发布于 2009-11-01 18:24:30

例如,你可以这样去掉空格:

代码语言:javascript
复制
explode(' ', trim(preg_replace('/\s+/', ' ', $temp)));

请注意,在Linux上,您可以通过读取/proc/net/dev来获取信息,而无需执行外部命令。

代码语言:javascript
复制
$lines = file('/proc/net/dev');
$interfaces = array();
for ($i = 2; $i < count($lines);  $i++) {
    $line = explode(':', $lines[$i]);
    $interfaces[] = trim($line[0]);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1656806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档