You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选显示指定前缀的Open-Vswitch虚拟网口详细信息

解决Open vSwitch s1开头网口完整信息显示问题

我之前也碰到过一模一样的情况——直接用grep s1-eth只能抓到每个网口的第一行,因为工具输出里每个网口的信息是多行块结构,其他行不含s1-eth关键词,直接被过滤掉了。下面给你几个实用的解决方法:

方法1:用ip link结合awk批量提取完整信息

这是最直接的命令行方式,不需要写脚本,一次性输出所有s1开头网口的完整信息:

ip link show | awk '/^[0-9]+: s1-/{flag=1; print; next} flag && /^[0-9]+:/{flag=0} flag'

工作原理:

  • 当匹配到**数字开头、后跟s1-**的行(也就是网口的起始行,比如3: s1-eth1: <BROADCAST,MULTICAST,UP,LOWER_UP>...),就开启标记flag=1,打印该行并跳到下一行
  • 当标记开启时,如果遇到下一个网口的起始行(同样数字开头),就关闭标记
  • 标记开启的所有行都会被打印,这样就完整输出了每个s1开头网口的所有信息(包括HWaddr、RX/TX包数、errors等)

方法2:通过Open vSwitch工具先筛选端口再逐个查询

如果你想更精准地针对OVS的端口,可以先列出所有s1开头的端口,再逐个查看详情:

for port in $(ovs-vsctl list port | grep -E 'name: s1-eth' | cut -d'"' -f2); do
    echo "------------------------------"
    echo "端口信息: $port"
    ip link show $port
    echo ""
done

优点:

  • 可以自定义输出格式(比如添加分隔线、高亮端口名)
  • 如果需要结合ethtool查看更多硬件信息,直接把ip link show换成ethtool $port即可

方法3:用ifconfig(适用于仍安装该工具的系统)

如果你的系统还保留了ifconfig,可以用类似的awk逻辑:

ifconfig | awk '/s1-eth/{flag=1; print; next} flag && /^[^ ]/{flag=0} flag'

为什么之前的命令只显示第一行?

因为grep默认只匹配包含指定关键词的行,而每个网口的RX/TX、errors等信息都在后续的独立行里,这些行不含s1-eth,所以被grep过滤掉了。上面的方法都是通过块匹配的方式,把整个网口的信息区块完整提取出来。

内容的提问来源于stack exchange,提问作者Dimareal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:21:09