实时监控网络流量的Bash脚本实战:助力高效服务器运维

在服务器运维过程中,网络流量的实时监控至关重要。无论是部署在本地IDC,还是托管于高性能香港服务器(如香港VPS香港云服务器香港独立服务器),掌握流量动态都能有效提升系统稳定性与安全性。

本文将分享一个轻量级的 Bash 脚本,用于实时监控指定网卡接口的接收与发送流量,并以人性化的单位格式展示结果。这一脚本特别适合部署在远程服务器中进行网络状态观察,是运维人员不可或缺的实用工具。


一、脚本核心功能概览

该脚本实现了以下关键能力:

  • 实时获取指定网卡(如eno1)的接收(RX)与发送(TX)数据;
  • 每秒动态计算流量差值;
  • 自动将字节转换为KB/s、MB/s或GB/s,更直观易懂;
  • 支持自动清屏更新,方便观察变化趋势。

这类脚本部署在香港VPS香港独立服务器中使用尤为高效,不仅可用于性能监控,也能结合业务需求做带宽规划与预警配置


二、脚本源码与实现逻辑

以下是完整脚本代码,可直接复制使用:

#!/bin/bash
# 设置接口名称(可根据实际网卡名称修改)
eth="eno1"

# 字节转换函数:将字节数转换为人类可读格式
bytes_to_human() {
    local bytes=$1
    if (( bytes < 1024 )); then
        echo "${bytes}B"
    elif (( bytes < 1048576 )); then
        printf "%.2fKB" "$(bc <<< "scale=2; $bytes / 1024")"
    elif (( bytes < 1073741824 )); then
        printf "%.2fMB" "$(bc <<< "scale=2; $bytes / 1048576")"
    else
        printf "%.2fGB" "$(bc <<< "scale=2; $bytes / 1073741824")"
    fi
}

# 进入循环实时监控
while true; do
    RXpre=$(cat /proc/net/dev | grep "$eth:" | awk '{print $2}')
    TXpre=$(cat /proc/net/dev | grep "$eth:" | awk '{print $10}')
    sleep 1
    RXnext=$(cat /proc/net/dev | grep "$eth:" | awk '{print $2}')
    TXnext=$(cat /proc/net/dev | grep "$eth:" | awk '{print $10}')
    RX=$((RXnext - RXpre))
    TX=$((TXnext - TXpre))
    RX_human=$(bytes_to_human $RX)
    TX_human=$(bytes_to_human $TX)
    clear
    echo -e "\t RX `date +%k:%M:%S` TX"
    echo -e "$eth \t $RX_human/s   $TX_human/s"
done

三、部署与使用方法

  1. 创建脚本文件
    nano monitor_traffic.sh
    
  2. 粘贴代码并保存
  3. 赋予执行权限
    chmod +x monitor_traffic.sh
    
  4. 运行脚本开始监控
    ./monitor_traffic.sh
    
  5. 按 Ctrl+C 停止监控进程

四、结合香港服务器部署的实用性

在多用户访问、高频数据交互、跨境服务部署等场景中,香港的网络节点优势明显。将上述流量监控脚本部署在香港服务器环境中,有如下优势:

  • 带宽稳定、访问国际快速:特别适合亚太市场、跨境电商平台等高并发业务场景;
  • 网络实时性保障:通过流量监控及时发现异常流量或潜在攻击;
  • 便于自动化集成:脚本可作为NOC监控系统的子模块集成使用,提升自动化水平;
  • 多样化服务器方案支持:从弹性可扩展的香港云服务器到独享资源的香港独立服务器,均可灵活部署。

五、总结

该 Bash 脚本提供了基础但高效的网络流量监控能力,适用于日常服务器运维,也可作为高级流量分析系统的基础模块。在实际项目中,您还可以结合 crontab 实现定时记录流量峰值,或与防火墙策略联动进行异常流控处理。

THE END