bash脚本,流量监控
TIME 2023-05-10 20:01
需求
监控系统 eth0 网卡的出站和进站流量,流量单位以 M 为单位
每秒输出一次结果,前面分别加上当前系统的“日期”“周几”“时间”
在屏幕上输出结果
监控系统 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
在太阳下