如何从bash-script(不是直接通过netlink API)获得Linux中某个网络设备支持的MTU范围?
我尝试使用ifconfig
和ip link
,但找不到解决方案。
最佳答案
软件包iproute2(从v4.19开始)分析最小/最大mtu详细信息,并在用户提供“--details”选项时将其打印到控制台
ip --details link
ip --details link --name=eth0
ip --details addr
ip --details addr show dev eth0
脚本示例
#!/bin/bash
for nic in eth0 eth1 eth2; do
min_mtu=`ip --details link show $nic | grep 'minmtu'| sed -r 's/^(.*minmtu) ([0-9]+) (.*)$/\2/'`
max_mtu=`ip --details link show $nic | grep 'maxmtu'| sed -r 's/^(.*maxmtu) ([0-9]+) (.*)$/\2/'`
echo "$nic - min: $min_mtu, max: $max_mtu"
done
输出:
eth0 - min: 60, max: 9000
eth1 - min: 68, max: 1770
eth2 - min: 68, max: 1770
Debian 10已经拥有足够版本的iproute2软件包(v4.20),可以显示最小/最大mtu。
Ubuntu 18.04.3的内核已经向用户空间提供了此信息,但是iproute2软件包不够新鲜(v4.15)不能解析内核的数据(并将其显示给用户)。
如果包已过时,则可以自己构建新的iproute2工具。
git clone git://git.kernel.org/pub/scm/network/iproute2/iproute2.git
cd iproute2 && ./configure && make && ./ip/ip --details link
关于linux - 从bash脚本获取特定设备的允许MTU范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59155150/