linux - 从bash脚本获取特定设备的允许MTU范围

标签 linux bash network-programming linux-device-driver mtu

如何从bash-script(不是直接通过 API)获得Linux中某个网络设备支持的MTU范围?
我尝试使用ifconfigip 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/

相关文章:

bash - 如何在 Bash 中连接文件中的所有行?

C++ Libzip + 删除 = 核心转储

linux - crontab - 没有任何反应

linux - 在不相关的可执行文件 linux 中调用函数

bash - 在 Ubuntu 中使用 bashrc 定义带循环的别名

linux - 使用 fdisk 的 Bash 脚本

c++ - 如何将 QNetworkManager 用于 REST api?

c - 如何在混杂模式下创建一个 tcp 套接字?

c# - 通过 TCP 处理客户端/服务器通信 - 一般问题

linux - 自动化电视捕获 Linux