Bash命令获取网络信息

Bash命令获取网络信息

我需要一个 bash 命令来获取当前网络带宽,吞吐量网卡正常运行时间,但我还没有在网上找到任何有希望的东西。

我尝试从中获取此类信息/proc/net/dev,但该文件似乎没有任何有关每个值含义的手册。

而且大多数网络监控工具都不是grep-able 或awk-able 的,因此它们对于脚本来说不是很好。

答案1

您好,欢迎来到 stackexchange。

首先,您正在寻找的不是“bash 命令”,您只是在寻找命令行实用程序。

其次,此类指标必须随着时间的推移而收集,并且会消耗主机上的资源,因此默认情况下不会执行此操作。

您可以通过轮询命令来创建自己的指标ip -s link show <interface>,例如:

$ ip -s link show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether b8:ae:ed:72:f3:b3 brd ff:ff:ff:ff:ff:ff
    RX:    bytes   packets errors dropped  missed   mcast
    579827124444 443147837      0       0       0 2802393
    TX:    bytes   packets errors dropped carrier collsns
    153295015536 161518564      0       0       0       0

然后解析出RX:字节和TX:字节并存储起来供以后使用。在固定的时间后,再次读取这些指标,并根据计数和经过的时间计算您想要的值。

对于网卡的正常运行时间,您可能必须检测网络接口状态的变化,我不知道任何跟踪接口启动时间的信息。

正如评论中所指出的,有一些第三方软件包可以为您执行某些操作,例如bwm-ng,但默认情况下它可能没有安装在您的发行版上。话虽如此,他们只会从您启动该实用程序时收集指标。

相关内容