Linux查看实时网速的Shell

Linux查看实时网速的shell

What

这是一个可以查看Linux主机实时网速的shell脚本,它能够根据网速自动调整单位以便更好的显示网速。

Linux显示实时网速的shell

Why

在工作过程中,会遇到服务器非常卡顿的情况,因为服务器是多人同时使用的,为了全面的分析服务器卡顿的原因,依次检查了CPU、内存、磁盘IO的情况,但是都没有发现明显异常,故想到了诊断网络,以便综合判断服务器状态,于是诞生了这个Shell

How

基本使用方法

./net.sh [网卡]

例如:查看网卡eth0的网速:

./net.sh eth0

开启DEBUG

这里仅提供通过修改源码的方式开启DEBUG模式,具体方式为:
对脚本中的DEBUG变量赋任意值

DEBUG=true

Source Code

如需转载,请说明出处

#!/bin/bash

#net.sh

# about
# 此shell用于显示实时网速
# author:masterc
# date:2021.03.19
# version:1.0

# 如需开启DEBUG,给DEBUG赋任意值即可
DEBUG=

# 计算网速
function getRate(){
    rate=$1
    result="${rate}"
    if [ ${rate} -gt 1024 ];then
        rate=`expr ${rate} / 1024`
        rate_p=`expr ${rate} % 1024`
        result="${rate}.${rate_p}"
    fi
    echo $result
}
# 计算量程
function getUnit(){
    rate=$1
    result="KB/s"
    if [ $rate -gt 1024 ];then
      result="MB/s"
    fi
    echo $result
}

function main(){
    # 要监听的网卡
    net_card=$1

    if [ ! $net_card ];then
        echo "net card is not selected!"
    else
        echo "net card:$net_card"
    fi

    #初始化
    # awk 'NR==8{print}' : 取ifconfig结果的第8行,可根据ifconfig结果做具体调整
    # awk -F '[(:]' '{print $4}' : 取上传字节数
    # awk -F '[(:]' '{print $2}' : 取下载字节数
    up_rate1=`ifconfig $net_card | awk 'NR==8{print}' | awk -F '[(:]' '{print $4}'`
    down_rate1=`ifconfig $net_card | awk 'NR==8{print}' | awk -F '[(:]' '{print $2}'`
    up_rate2=0
    down_rate2=0

    while true
    do
        sleep 1

        up_rate2=`ifconfig $net_card | awk 'NR==8{print}' | awk -F '[(:]' '{print $4}'`
        down_rate2=`ifconfig $net_card | awk 'NR==8{print}' | awk -F '[(:]' '{print $2}'`

        # DEBUG
        if [ $DEBUG ];then
            echo "up_rate1:${up_rate1},down_rate1:${down_rate1}"
            echo "up_rate2:${up_rate2},down_rate2:${down_rate2}"
        fi

        # 取差值
        up_rate=`expr $up_rate2 - $up_rate1`
        down_rate=`expr $down_rate2 - $down_rate1`

        # 记录旧值
        up_rate1=$up_rate2
        down_rate1=$down_rate2

        # 单位转换 B -> KB
        up_rate=`expr $up_rate / 1024`
        down_rate=`expr $down_rate / 1024`
        
        # \r用于每次输出后将光标重新定位到开头
        printf "\r[UP:%6.1f %s,DOWN:%6.1f %s]" `getRate $up_rate` `getUnit $up_rate` `getRate $down_rate` `getUnit $down_rate`
    done
}
main $@
TestBandwitdth脚本用于测试带宽; //***************************************************************************************** 用法: 1.将“TestBandwidth.tar.gz”脚本copy到服务器上解压后,进入目录; 2.编辑“TestURL.sh”:灌流量; 上行:wget http://*** 下行:post http://*** 3.如果修改了步骤2,执行此步,否则跳过: 修改 TestBandwidth.tar.gz 脚本中的倒数5-6行; kill -9 `ps -ef|grep wget|grep http|awk '{print $2}'` //修改kill关键字:grep wget rm zhuxian* //修改rm关键字:zhuxian* 4.修改“bandwidth.sh”:修改检测网卡: netcard=em1 5.使用后台运行命令执行:nohup ./bandwidth.sh (注:停止脚本 pkill -9 bandwidth.sh && pkill -9 wget) 6.查看结果:BandwitdthResult.txt //********************************************************* 测试流量:清空“TestURL.sh”文件时执行就是测试流量 //***************************************************************************************** 脚本说明: 1.调用TestURL.sh脚本启动灌流量操作; 2.等待10s(防止刚开始下载时的流量冲高); 3.取当前网卡已接收的上行、下行数据流量; 4.等待5s; 5.取当前网卡已接收的上行、下行数据流量; 6.计算两次取值中间的差值,算平均值; 7.等待10s,开始下一次小循环(循环4次)(一次小循环70s); 8.清除下载进程,清除下载文件,清除下载日志; 9.等待3495s,开始下一次大循环(一次大循环1h);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值