监控网卡出入流量
需求背景:
客户现场没有有线网络条件,故只能采用4G无线路由器方案
想要监控使用了多少流量,于是有了以下脚本
这个脚本的目的是统计每个网卡的上行和下行流量,并将结果输出到一个文件中
具体脚本如下
#!/bin/bash
# 获取所有网卡的名称
interfaces=$(ifconfig | grep -o "^[a-z0-9]*")
# 循环执行统计
while true
do
# 获取当前时间
date=$(date "+%Y-%m-%d %H:%M:%S")
echo "开机时间:`uptime -s`" >> Network-card-traffic.txt
echo "当前时间:$date" >> Network-card-traffic.txt
# 遍历每个网卡
for interface in $interfaces
do
# 跳过本地回环地址的网卡
if [ "$interface" == "lo" ]; then
continue
fi
# 获取网卡的上传和下载字节数
tx_bytes=$(ifconfig $interface | grep -o "TX packets [0-9]* bytes [0-9]*" | tr -s " " | cut -d " " -f 5)
rx_bytes=$(ifconfig $interface | grep -o "RX packets [0-9]* bytes [0-9]*" | tr -s " " | cut -d " " -f 5)
# 将字节数转换为MB
tx_mb=$(echo "scale=2; $tx_bytes / 1024 / 1024" | bc)
rx_mb=$(echo "scale=2; $rx_bytes / 1024 / 1024" | bc)
# 输出网卡的流量信息
echo "----------" >> Network-card-traffic.txt
echo "网卡$interface:" >> Network-card-traffic.txt
echo "上行流量:$tx_mb MB" >> Network-card-traffic.txt
echo "下行流量:$rx_mb MB" >> Network-card-traffic.txt
echo "" >> Network-card-traffic.txt
done
# 等待10秒
sleep 10
done
- 使用ifconfig命令获取所有网卡的名称,并存储在一个变量interfaces中。
然后,进入一个无限循环,每隔10秒执行一次统计操作。 - 在每次统计操作中,先使用date命令获取当前时间,和开机时间一起输出到文件中,遍历每个网卡,跳过本地回环地址
- 使用ifconfig命令获取上传和下载的字节数
- 使用bc命令将字节数转换为MB,输出到文件中
- 该脚本的用途是让您可以监控您的网络流量情况