Debian11系统下用脚本获取网络接口的流量速率

如果我们想在linux下查看一个网络接口每秒钟收发的数据流量信息,可以采用下面的脚本来实现,这里以Debian11环境为例。

首先需要安装依赖包

sudo apt install jq

脚本内容如下,直接复制粘贴到一个文件,比如if_stat.sh中即可

#!/bin/bash

# 获取接口名

interface="enp2s0"  #需要根据自己系统里的接口名字进行更换

# 定义函数,用于获取接口字节数

get_interface_bytes() {

    ip -s -j -p -d link show dev "$1" | jq -r ".[0].stats64.$2.bytes"

}

# 获取初始的接收和发送的字节数

received_bytes=$(get_interface_bytes "$interface" "rx")

transmitted_bytes=$(get_interface_bytes "$interface" "tx")

# 延时一秒钟

sleep 1

# 再次获取接口字节数

latest_received_bytes=$(get_interface_bytes "$interface" "rx")

latest_transmitted_bytes=$(get_interface_bytes "$interface" "tx")

# 计算每秒钟的流量

received_per_second=$((latest_received_bytes - received_bytes))

transmitted_per_second=$((latest_transmitted_bytes - transmitted_bytes))

# 将字节数转换为易读格式

function format_bytes() {

    local bytes=$1

    local -a suffixes=('B' 'KB' 'MB' 'GB')

    local suffix_index=0

    while ((bytes > 1024)); do

        bytes=$((bytes / 1024))

        suffix_index=$((suffix_index + 1))

    done

    echo "$bytes ${suffixes[suffix_index]}"

}

# 打印结果

echo "RX/s: $(format_bytes $received_per_second)"

echo "TX/s: $(format_bytes $transmitted_per_second)"

```

在debian的shell下执行:

bash if_stat.sh 即可得到当前的网络接口数据收发速率,如下:

RX/s: 40 KB

TX/s: 24 KB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值