查看Linux服务器网卡流量小脚本shell和Python各一例

有时我们需要较为实时的查看服务器上的网卡流量,这里我写了两个小脚本,一个用shell(先写的,一次只能查看一个网卡),另一个用Python(后写的,一次可查看多个网卡)。脚本中都用了while true“死循环”,每隔10s从“/proc/net/dev”中取一次值并根据10s内的差值计算10s内的平均带宽;按ctrl+c停止执行。脚本兼容centos6和7

两个脚本都不太复杂,而且脚本中注释也比较细致,所以我就不过多解释脚本内容了。直接上图上脚本:

shell版--使用截图:

shell版代码:

#!/bin/sh
#by ljk 20160526

if [ "$1" = "" ];then    #判断后面是否有跟参数
    echo -e "\n      use interface_name after the script,like \"script eth0\"...\n"
    exit -1
fi

echo -e "\n      start monitoring the $1,press \"ctrl+c\" to stop"
echo ----------------------------------------------------------

file=/proc/net/dev    #内核网卡信息文件
while true
    do
    RX_bytes=`cat $file|grep $1|sed ‘s/^ *//g‘|awk -F‘[ :]+‘ ‘{print $2}‘`    #这里sed这一步为了同时兼容centos6和7
    TX_bytes=`cat $file|grep $1|sed ‘s/^ *//g‘|awk -F‘[ :]+‘ ‘{print $10}‘`
    sleep 10
    RX_bytes_later=`cat $file|grep $1|sed ‘s/^ *//g‘|awk -F‘[ :]+‘ ‘{print $2}‘`
    TX_bytes_later=`cat $file|grep $1|sed ‘s/^ *//g‘|awk -F‘[ :]+‘ ‘{print $10}‘`

    #B*8/1024/1024=Mb
    speed_RX=`echo "scale=2;($RX_bytes_later - $RX_bytes)*8/1024/1024/10"|bc`
    speed_TX=`echo "scale=2;($TX_bytes_later - $TX_bytes)*8/1024/1024/10"|bc`

    printf "%-3s %-3.1f %-10s %-4s %-3.1f %-4s\n" IN: $speed_RX Mb/s OUT: $speed_TX Mb/s
done

Python版--使用截图:

Python版代码:

#!/bin/env python3
#by ljk 20160526

import os,re,sys,time

if len(sys.argv) == 1:
    print(‘\n使用方法:请跟上网卡名称,可接"单个网卡"/"多个网卡,以空格分开".\n‘)
    sys.exit(100)
else:
    print(‘start monitoring,press "ctrl+c" to stop\n‘)

    for arg in sys.argv[1:]:    #输出标头
        header = ‘------{} bandwidth(Mb/s)------‘.format(arg)
        print(header.ljust(35),end=‘‘)
    print()

    #global values_dic
    values_dic = {}    #定义空字典,用来在下面函数中存放各网卡的各项需要用到的值

    def get_values(orders):
        try:
            with open(‘/proc/net/dev‘) as f:
                lines=f.readlines()    #内容不多,一次性读取较方便
                for arg in sys.argv[1:]:
                    for line in lines:
                        line=line.lstrip()    #去掉行首的空格,以便下面split
                        if re.match(arg,line):
                            values = re.split("[ :]+",line)    #以空格和:作为分隔符
                            values_dic[arg+‘r‘+orders]=values[1]    #1为接收值
                            values_dic[arg+‘t‘+orders]=values[9]    #9为发送值
                            #return [values[1],values[9]]    #可返回列表
        except (FileExistsError,FileNotFoundError,PermissionError):
            print(‘open file error‘)
            sys.exit(-1)

    try:
        while True:
            get_values(‘first‘)    #第一次取值
            time.sleep(10)
            get_values(‘second‘)    #10s后第二次取值

            for arg in sys.argv[1:]:
                r_bandwidth = (int(values_dic[arg+‘r‘+‘second‘]) - int(values_dic[arg+‘r‘+‘first‘]))/1024/1024/10*8
                t_bandwidth = (int(values_dic[arg+‘t‘+‘second‘]) - int(values_dic[arg+‘t‘+‘first‘]))/1024/1024/10*8
                print(‘IN: ‘+str(round(r_bandwidth,2)).ljust(8)+‘  OUT: ‘+str(round(t_bandwidth,2)).ljust(16),end=‘‘)

            print()
            values_dic = {}    #清空本次循环后字典的内容
    except KeyboardInterrupt:
        print("\n-----bye-----")

这俩脚本使用起来都还是很方便实用的,共享出来希望能给朋友们工作中带来一点方便。

时间: 2024-10-08 16:23:11

查看Linux服务器网卡流量小脚本shell和Python各一例的相关文章

查看Linux服务器网卡流量小脚本shell

有时我们需要较为实时的查看服务器上的网卡流量,这里我写了个shell小脚本.脚本中用了while true"死循环",每隔10s从"/proc/net/dev"中取一次值并根据10s内的差值计算10s内的平均带宽:按ctrl+c停止执行.脚本兼容centos6和7,脚本不太复杂,而且脚本中注释也比较细致,所以我就不过多解释脚本内容了. 注:1kb=8字节,1Mb=1024kb #!/bin/sh   if [ "$1" = ""

iftop 监控linux服务器网卡流量

(1)源码编译安装iftop 安装iftop必需的软件库: [[email protected] ~]#yum install  libpcap libpcap-devel ncurses ncurses-devel [[email protected] ~]#yum install  flex byacc 下载iftop,编译安装: [[email protected] ~]#wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17

网卡流量监控脚本 ( Shell )

#!/bin/bash # Traffic Monitor # author: Xiao Guaishou get_traffic_info(){ recv=`cat /proc/net/dev | awk -F '[: ]+' '/'"$dev"'/{print $3}'` sent=`cat /proc/net/dev | awk -F '[: ]+' '/'"$dev"'/{print $11}'` } get_traffic_rate(){ In=`echo

查看linux server网络流量的shell脚本

之前写过一个查看linux服务器当前流量的小脚本,很简单,但能直观的给我们一些信息 #!/bin/sh ###统计10s内的平均流量,以Mb为单位 if [ "$1" = "" ];then    echo -e "\n      use interface_name after the script,like \"$0 eth0\"...\n"    exit -1 fi echo -e "\n      star

通过Nethogs查看服务器网卡流量情况

在日常运维工作中,会碰到服务器带宽飙升致使网站异常情况.作为运维人员,我们要能非常清楚地了解到服务器网卡的流量情况,观察到网卡的流量是由哪些程序在占用着. 今天介绍一款linux下查看服务器网卡流量占用情况的工具:Nethogs,来自github上的开源工具.它不依赖内核中的模块.当我们的服务器网络异常时,可以通过运行nethogs程序来检测是那个程序占用了大量带宽.节省了查找时间. Nethogs安装: 方法一:在epel源中可以直接yum安装[[email protected] src]#

linux服务器批量部署应用系统shell脚本(Tomcat/jetty)

linux服务器批量部署应用系统shell脚本: 1.请更换代码内的服务器地址(Tomcat或jetty服务器) serverRoot=/home/undoner/java_tool/apache-tomcat-7.0.61 serverDir=/home/undoner/java_tool/apache-tomcat-7.0.61/webapps 2.请更换工程所属配置文件名称 /WEB-INF/classes/install.properties 3.请将war包上传至本命令同级的目录,执行

查看Linux服务器网络状态(转)

转载自http://blog.chinaunix.net/uid-26413552-id-3202366.html 查看Linux服务器网络状态 ifconfig 用来显示所有网络接口的详细情况的,如:ip地址,子网掩码等. ethx是以太网网卡的名称. 配置文件在/etc/sysconfig/network-scripts/ifcfg-eth0中 DEVICE="eth0" HWADDR="00:0C:29:68:C0:8C" NM_CONTROLLED=&quo

查看Linux服务器内存使用情况

一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在. 本文介绍如何查看Linux服务器内存使用情况, 1.free命令 free -m [[email protected] ~]# free -m            total       used       free     shared    buffers     cachedMem:          1526        182       1344          0         16  

查看Linux服务器的CPU详细信息

查看Linux服务器的CPU详细信息 在Linux系统中,CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中,我们可以通过cat /proc/cpuinfo查看如下: 下面我们来分析其中几个比较重要的指标: processor 逻辑处理器的id. physical id 物理封装的处理器的id. core id 每个核心的id. cpu cores 位于相同物理封装的处理器中的内核数量. siblings 位于相同物理封装的处理器中逻辑处理器的数量. 判断Linux服务