在太阳下
不管你喜不喜欢,高不高兴,爱与不爱;太阳照旧照耀着你!温暖着你!

bash脚本,流量监控

bash脚本,流量监控
TIME 2023-05-10 20:01

需求
监控系统 eth0 网卡的出站和进站流量,流量单位以 M 为单位
每秒输出一次结果,前面分别加上当前系统的“日期”“周几”“时间”
在屏幕上输出结果

创建名为“流量监控”的 bash 脚本

vi 流量监控.sh

粘贴以下代码

#!/bin/bash

while true; do
    # 获取当前时间、出网流量和入网流量
    date=$(date "+%Y-%m-%d")
    day_of_week=$(date "+%u")
    case $day_of_week in
        "1") day_of_week="周一" ;;
        "2") day_of_week="周二" ;;
        "3") day_of_week="周三" ;;
        "4") day_of_week="周四" ;;
        "5") day_of_week="周五" ;;
        "6") day_of_week="周六" ;;
        "7") day_of_week="周日" ;;
    esac
    system_time=$(date "+%H:%M:%S")

    out_bytes=$(cat /sys/class/net/eth0/statistics/tx_bytes)
    in_bytes=$(cat /sys/class/net/eth0/statistics/rx_bytes)

    # 等待1秒钟,并获取新的出网流量和入网流量
    sleep 1
    out_bytes_new=$(cat /sys/class/net/eth0/statistics/tx_bytes)
    in_bytes_new=$(cat /sys/class/net/eth0/statistics/rx_bytes)

    # 计算出网速度,单位为M
    out_speed=$(echo "scale=3; ($out_bytes_new - $out_bytes) / 1000000" | bc)
    if (( $(echo "$out_speed < 1" | bc -l) )); then
        out_speed=$(printf '%.3f' $out_speed)
    fi

    # 计算入网速度,单位为M
    in_speed=$(echo "scale=3; ($in_bytes_new - $in_bytes) / 1000000" | bc)
    if (( $(echo "$in_speed < 1" | bc -l) )); then
        in_speed=$(printf '%.3f' $in_speed)
    fi

    # 在屏幕上输出监控情况
    echo "$date $day_of_week $system_time 出站数据: $out_speed M, 进站数据: $in_speed M"
done

赋予流量监控脚本“流量监控.sh”可执行权限

chmod +x

运行流量监控脚本“流量监控.sh”

./流量监控.sh

返回结果示例

2023-05-10 周三 19:47:08 出站数据: 0.006 M, 进站数据: 0.001 M
2023-05-10 周三 19:47:09 出站数据: 9.305 M, 进站数据: 0.721 M
2023-05-10 周三 19:47:10 出站数据: 14.297 M, 进站数据: 1.050 M
2023-05-10 周三 19:47:11 出站数据: 13.329 M, 进站数据: 0.979 M
2023-05-10 周三 19:47:12 出站数据: 13.975 M, 进站数据: 1.005 M

点击数:14

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
Verified by MonsterInsights