Linux 获取物理网口/或虚拟网络接口
Posted catoop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 获取物理网口/或虚拟网络接口相关的知识,希望对你有一定的参考价值。
Linux 的网络配置信息一般包括 物理网口 和 虚拟网口,而网口的名字又不是固定的,可以按照本文的方式获取物理网口的名称,然后结合 ethtool 命令获取网口的更多信息:
方法1:
# 这个命令是读取所有网络接口
ls -l /sys/class/net/
# 使用 grep -v 反向过滤,排除到虚拟网络接口,剩下的就是物理接口了
ls -l /sys/class/net/ | grep -v virtual
方法2:
使用如下脚本,排除到包含 mac 地址为 00:00:00:00:00:00 的接口后就是物理接口
#!/bin/bash
for i in $(ip -o link show | awk -F': |@' '{print $2}')
do
mac=$(ethtool -P $i)
[[ $mac != *"00:00:00:00:00:00"* ]] && echo "$i"
done
特别注意:
awk 的分隔参数包含:空格
和@
的原因是,如果你的网络接口是 ipv6的,则使用-o
参数得到的名称会带个@if6
小尾巴,例如示例7: veth7866121@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-92e7ed9f5c3d state UP mode DEFAULT group default \\ link/ether 82:bc:b5:41:14:9c brd ff:ff:ff:ff:ff:ff link-netnsid 0
命令 ethtool
可以获取具体接口的详细信息,例如 ethtool eno1
命令 ethtool eno1 | grep "Link detected"
检测网口的连接状态(yes|no)
(END)
以上是关于Linux 获取物理网口/或虚拟网络接口的主要内容,如果未能解决你的问题,请参考以下文章