我有一个特定的需求,即确定八位字节的一部分(例如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 问题关于该主题。