我想知道如何编写 bash 脚本来检查哪个接口有外部连接(eth0、eth1、wlan0、em1 和 em2),这样我就可以获得一个在任何机器上工作的脚本,而不必在我的接口中硬编码接口脚本
答案1
使用ip route show
并提取感兴趣的接口名称。例如,要提取可直接访问默认网关的接口的名称:
$ ip route show | sed -e 's/^default via [0-9.]* dev \(\w\+\).*/\1/'
ens192
用于 IPv6 使用ip -6 route show
。
原来的问题要求具有外部连接的接口,这比直接访问默认网关的接口更通用。我无法对此进行测试,但可能0.0.0.0/0
在输出中查找ifip route show
会有所帮助。