在 CentOS 中识别包含特定八位字节的 ethN 接口

在 CentOS 中识别包含特定八位字节的 ethN 接口

我有一个特定的需求,即确定八位字节的一部分(例如xx.xx.xx.112)属于 CentOS 机器上的哪个接口

我最初的想法是转储输出ifconfig并手动解析以识别相应的接口。这是正确的方法吗?或者有更好的方法吗?

我的粗略尝试如下GNU grep

ifconfig | grep -B1 -E '\.112' | grep -oP 'e\w+:'

答案1

我认为awk答案可能会稍微快一些,因为它不需要额外的子壳:

ip addr show | awk -F: '/^[0-9]/ {dev=$2} /inet .*\.112/ {print dev; exit}'

另一种可能性是,如果你知道一个可以从接口路由出来的地址,比如假设该地址有一个网关,那么.1你可以这样做

ip route get a.b.c.1 | cut -f3 -d' '

一般来说,ip这是应该替换的较新的命令ifconfig,尽管这已经存在很长时间了,而且ifconfig还没有消失,但看看这个 Server Fault 问题关于该主题。

相关内容