概述

用于计算服务器出口带宽实际速率,方便统计服务器网络信息。

脚本功能

该脚本通过生成约为1.5G临时文件,并提交至指定的url地址。通过检查默认出口网卡流量数值来判断出口带宽网络速率。

执行效果
请输入图片描述

请输入图片描述

脚本内容
#!/bin/bash
# 服务器出口网络带宽速率计算
# Author: admin@ym68.cc
# Date: 2021-11-08
# Version: 0.0.1
# Description: 该脚本用于计算服务器出口网络带宽速率

# 检查是否有测速请求进程未完成
ps -o pid,command|awk '/Speed_Test_File[[:space:]]/ {print $1}'|xargs -i kill {} 2> /dev/null
# 默认流量出口网卡
Default_Network_Device_Name=`route -n|awk '/^0.0.0.0/ {print $8}'`
# 临时测速文件
Temp_Speed_File="${HOME}/Speed_Test_File"
if [ ! -f "${Temp_Speed_File}" ];then
    echo "开始生成临时文件:${Temp_Speed_File}"
    # 生成临时测速文件
    dd if=/dev/zero of=${Temp_Speed_File} bs=1024 count=1524880 &> /dev/null
fi
# 测试百度综合线路
curl -F "data=@${Temp_Speed_File}" https://www.baidu.com/speed &> /dev/null &
# 测试阿里综合线路
#curl -F "data=@${Temp_Speed_File}" https://www.aliyun.com/speed &> /dev/null &
# 测试移动线路
#curl -F "data=@${Temp_Speed_File}" https://ecloud.10086.cn/speed &> /dev/null &
# 测试电信云综合线路
#curl -F "data=@${Temp_Speed_File}" https://www.ctyun.cn/speed &> /dev/null &
# 测试联通线路
#curl -F "data=@${Temp_Speed_File}" https://cucc.wocloud.cn/speed &> /dev/null &
sleep 3
echo "当前网卡 ${Default_Network_Device_Name} 测速将开始,等待10s..."
# 历史出口流量
Old_Network_Outlet_Flow_Sum=`awk '{print $1}' /sys/class/net/${Default_Network_Device_Name}/statistics/tx_bytes`
echo "${Old_Network_Outlet_Flow_Sum}" &> /dev/null
sleep 10
# 最新新出口流量
New_Network_Outlet_Flow_Sum=`awk '{print $1}' /sys/class/net/${Default_Network_Device_Name}/statistics/tx_bytes`
# 网卡出口流量字节速率
Network_Outlet_Flow_Sum=`echo |awk "{printf \"%f\", (${New_Network_Outlet_Flow_Sum}-${Old_Network_Outlet_Flow_Sum})/10}"`
# 网卡出口流量比特速率
Network_Outlet_Flow_Sum_D=`echo |awk "{printf \"%f\",(${New_Network_Outlet_Flow_Sum}-${Old_Network_Outlet_Flow_Sum})*8/10}"`
if [ "${Network_Outlet_Flow_Sum_D/.*}" -lt 10000000000 ];then
    # 标准出口比特速率
    Network_Outlet_Device_Flow_Sum=`echo|awk "{printf \"%f\",${Network_Outlet_Flow_Sum_D/.*}/1024/1024}"`
    # 标准出口字节速率
    Network_Outlet_Device_Flow_Sum_D=`echo|awk "{printf \"%f\",${Network_Outlet_Flow_Sum/.*}/1024/1024}"`
    # 标准网络速率
    Network_Outlet_Device_Flow_Type="Mbps"
    # 标准硬盘速率
    Network_Outlet_Device_Flow_Type_D="MB"
fi

echo "当前网卡 ${Default_Network_Device_Name} 测试出口流量速率约为: ${Network_Outlet_Device_Flow_Sum/.*} ${Network_Outlet_Device_Flow_Type}/s"
echo "当前网卡 ${Default_Network_Device_Name} 测试出口流量格式化速率约为: ${Network_Outlet_Device_Flow_Sum_D} ${Network_Outlet_Device_Flow_Type_D}/s"
# 清理未完成进程
ps -o pid,command|awk '/Speed_Test_File[[:space:]]/ {print $1}'|xargs -i kill {} 2> /dev/null

分类: Shell