首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >仅使用netstat的网络带宽使用bash脚本

仅使用netstat的网络带宽使用bash脚本
EN

Stack Overflow用户
提问于 2021-12-20 13:57:55
回答 1查看 435关注 0票数 2

我很难计算网卡上的带宽使用情况。我是在FreeBSD上这样做的,我只能使用netstat,而不可能安装额外的模块。

我只是不知道怎么算。这时,我想出了一个在脚本中执行命令的想法

netstat -i -b -n -I接口写入文件列8和11,即字节+ Obytes

然后再次执行此命令,并读取相同的列。

现在我有个问题,那该怎么办?有没有计算带宽消耗的数学公式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-20 15:17:43

处理netstat输出以获得与awk的给定接口的IbytesObytes和:

代码语言:javascript
运行
复制
netstat -i -b -n -I IFACE |
awk 'BEGIN { getline } { i += $8; o += $11 } END { print i, o }'

现在是一个简单的监视脚本:

代码语言:javascript
运行
复制
#!/bin/bash

iface=$1
seconds=$2

while :
do
    read curr_Ibytes curr_Obytes < <(
        netstat -i -b -n -I "$iface" |
        awk 'BEGIN { getline } { i += $8; o += $11 } END { print i, o }'
    )

    if [[ "$prev_Ibytes" ]]
    then
        printf 'in: %d B/s\tout: %d B/s\n' \
            "$(( (curr_Ibytes - prev_Ibytes) / seconds ))" \
            "$(( (curr_Obytes - prev_Obytes) / seconds ))"
    fi

    prev_Ibytes=$curr_Ibytes
    prev_Obytes=$curr_Obytes

    sleep "$seconds"
done

示例:

代码语言:javascript
运行
复制
./netmon.sh em0 5
in: 520 B/s out: 3040 B/s
in: 325 B/s out: 1648 B/s
in: 95 B/s  out: 130 B/s
in: 1380 B/s    out: 23629 B/s
in: 232 B/s out: 146 B/s
...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70422941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档