如何使用 ifconfig 仅显示活动界面

qwe*_*iop 26 command-line osx networking interface

默认情况下ifconfig会显示所有可用的接口,但如果我只想显示接口active呢?喜欢,en0只在下面。

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 14:10:9f:e0:eb:c9 
    inet6 fe80::1610:9fff:fee0:ebc9%en0 prefixlen 64 scopeid 0x4 
    inet X.X.X.X netmask 0xffffff00 broadcast 101.6.69.255
    nd6 options=1<PERFORMNUD>
    media: autoselect
    **status: active**
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 32:00:14:e7:4f:80 
    media: autoselect <full-duplex>
    **status: inactive**
Run Code Online (Sandbox Code Playgroud)

通知ifconfig en0不会满足,en0并不总是活跃的 ;)

我正在运行 Mac OS X。

Gav*_*cey 25

要获得所有活动服务的完整描述,请尝试:

ifconfig | pcregrep -M -o '^[^\t:]+:([^\n]|\n\t)*status: active'
Run Code Online (Sandbox Code Playgroud)

这个简单的正则表达式应该只过滤掉活动接口及其所有信息。我建议您在 ~/.profile 或 ~/.bash_profile 文件中为此添加一个别名(可能是 ifactive?)

要获取接口名称(对脚本有用),请使用:

ifconfig | pcregrep -M -o '^[^\t:]+:([^\n]|\n\t)*status: active' | egrep -o -m 1 '^[^\t:]+'
Run Code Online (Sandbox Code Playgroud)

你必须安装pcregrep才能工作。它位于 pcre 包中的macports上。或者,这应该与 GNU grep 一起使用,grep -Pzo而不是使用,pcregrep -M -o但其余部分相同,但我尚未对此进行测试。


小智 5

以下将仅打印那些配置为具有 IP 的接口

ifconfig | grep "inet.*broadcast"
Run Code Online (Sandbox Code Playgroud)