我的编程空间,编程开发者的网络收藏夹
学习永远不晚

网卡流量监控脚本,python实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

网卡流量监控脚本,python实现

使用-h获取帮助

在Python2.7版本以上执行

脚本获取:https://github.com/raysuen/AdapterMonitor

内容:

#!/usr/bin/env python# _*_coding:utf-8_*_# Auth by raysuenimport sys,timeimport reAdapterInfoDict={    "InterFace":"all",    "Interval":1,    "NumberOfDis":None,    "Action":"all",    "ShowSize":"b"             }def GetAdapterInfo():    faces=[]    # f=open(r"C:\Users\Administrator\Downloads\dev","rb")    f = open(r"/proc/net/dev", "rb")    for line in f:  #循环获取文件信息        if line.decode(encoding="utf8").find(":") != -1:        #判断是否为网卡列            if AdapterInfoDict["InterFace"] == "all":           #判断获取网卡的名称,all为全部网卡                if AdapterInfoDict["ShowSize"] == "b":          #判断显示的大小,默认为bytes                    #生成一维数组记录,网卡信息:网卡名称,进流量,出流量                    face=[line.decode(encoding="utf8").split(":")[0].strip(),int(line.decode(encoding="utf8").split()[1]),int(line.decode(encoding="utf8").split()[9])]                elif AdapterInfoDict["ShowSize"] == "k":                    face=[line.decode(encoding="utf8").split(":")[0].strip(),round(int(line.decode(encoding="utf8").split()[1])/1024),round(int(line.decode(encoding="utf8").split()[9])/1024)]                elif AdapterInfoDict["ShowSize"] == "m":                    face=[line.decode(encoding="utf8").split(":")[0].strip(),round(int(line.decode(encoding="utf8").split()[1])/1024/1024),round(int(line.decode(encoding="utf8").split()[9])/1024/1024)]                else:                    print("The value of -s is invalid,you can use -h to get help.")                    exit(69)                faces.append(face)         #把每个网卡信息的一维数组存入二维数组            else:                for facename in AdapterInfoDict["InterFace"].split(","):   #判断网卡名称,可以为多个网卡,多个网卡用逗号分隔                    if line.decode(encoding="utf8").split(":")[0].strip() == facename:                        if AdapterInfoDict["ShowSize"] == "b":                            face = [line.decode(encoding="utf8").split(":")[0].strip(),                                    int(line.decode(encoding="utf8").split()[1]),                                    int(line.decode(encoding="utf8").split()[9])]                        elif AdapterInfoDict["ShowSize"] == "k":                            face = [line.decode(encoding="utf8").split(":")[0].strip(),                                    round(int(line.decode(encoding="utf8").split()[1]) / 1024),                                    round(int(line.decode(encoding="utf8").split()[9]) / 1024)]                        elif AdapterInfoDict["ShowSize"] == "m":                            face = [line.decode(encoding="utf8").split(":")[0].strip(),                                    round(int(line.decode(encoding="utf8").split()[1]) / 1024 / 1024),                                    round(int(line.decode(encoding="utf8").split()[9]) / 1024 / 1024)]                        else:                            print("The value of -s is invalid,you can use -h to get help.")                            exit(69)                        faces.append(face)    return facesdef help_func():    print("""    NAME:        AdapterMonitor  --Display net interface netflow    SYNOPSIS:        AdapterMoniter [-f] [interface names] [-i] [interval time] [-n] [display number] [-a] [action] [-s] [show size]    DESCRIPTION:        -f  specify interface names.values is interface names or all,default all.            You can specify a name,also some names.            If the names is more one,you can use comma as separator.            Example:                AdapterMoniter.py -f eth0                AdapterMoniter.py -f eth0,eth2        -i  specify a interval time to display,defaul 1 second.            Unit: second        -n  to display how many times you want.Default: None,means unlimited number.            Example:                AdapterMoniter.py -n 2        -a  to display what action you want,IN/OUT/ALL.Defaul: all.            Example:                AdapterMoniter.py -a in        -s  to display the netflow size.Default: b(bytes)            values: b(bytes)/k(KB)/m(MB)            Example:                AdapterMoniter.py -s k                    EXAMPLE:        AdapterMoniter.py -f eth0 -i 2 -n 10 -a in -s k    """)if __name__ == "__main__":    num=1            #计数器,记录当前参数下标    exitnum=0        #退出时的退出数    #获取参数    if len(sys.argv) > 1:  #判断是否有参数输入        while num < len(sys.argv):            if sys.argv[num] == "-h":                help_func()     #执行帮助函数                exitnum = 0                exit(exitnum)            elif sys.argv[num] == "-f":                num += 1               #下标向右移动一位                if num >= len(sys.argv):    #判断是否存在当前下标的参数                    exitnum = 99                    print("The parameter must be specified a value,-f.")                    exit(exitnum)                elif re.match("^-",sys.argv[num]) == None:       #判断当前参数是否为-开头,None为非-开头                    AdapterInfoDict["InterFace"]=sys.argv[num]                    num += 1                else:                    print("Please specify a valid value for -f.")                    exitnum = 98                    exit(exitnum)            elif sys.argv[num] == "-i":                num += 1                if num >= len(sys.argv):                    exitnum = 97                    print("The parameter must be specified a value,-i.")                    exit(exitnum)                elif re.match("^-",sys.argv[num]) == None:                    if sys.argv[num].isdigit() == True:   #判断是否为正整数                        AdapterInfoDict["Interval"]=sys.argv[num]                        num += 1                    else:                        print("The value of -i must be digit.")                        exitnum = 96                        exit(exitnum)                else:                    print("Please specify a valid value for -i.")                    exitnum = 95                    exit(exitnum)            elif sys.argv[num] == "-n":                num += 1                if num >= len(sys.argv):                    exitnum = 94                    print("The parameter must be specified a value,-n.")                    exit(exitnum)                elif re.match("^-",sys.argv[num]) == None:                    if sys.argv[num].isdigit() == True:                        AdapterInfoDict["NumberOfDis"]=sys.argv[num]                        num += 1                    else:                        print("The value of -n must be digit.")                        exitnum = 93                        exit(exitnum)                else:                    print("Please specify a valid value for -n.")                    exitnum = 92                    exit(exitnum)            elif sys.argv[num] == "-a":                num += 1                if num >= len(sys.argv):                    exitnum = 91                    print("The parameter must be specified a value,-a.")                    exit(exitnum)                elif re.match("^-",sys.argv[num]) == None:                    AdapterInfoDict["Action"]=sys.argv[num]                    num += 1                else:                    print("Please specify a valid value for -a.")                    exitnum = 90                    exit(exitnum)            elif sys.argv[num] == "-s":                num += 1                if num >= len(sys.argv):                    exitnum = 89                    print("The parameter must be specified a value,-s.")                    exit(exitnum)                elif re.match("^-",sys.argv[num]) == None:                    AdapterInfoDict["ShowSize"]=sys.argv[num]                    num += 1                else:                    print("Please specify a valid value for -s.")                    exitnum = 90                    exit(exitnum)    #获取开始的网卡信息    facesPre = GetAdapterInfo()    if AdapterInfoDict["NumberOfDis"] == None:   #判断显示次数,None为无限次        t = 0                              #计数器,没10次打印一下行头        while True:            time.sleep(int(AdapterInfoDict["Interval"]))   #睡眠,根据时间间隔            facesSuf = GetAdapterInfo()                    #获取比对的结束网卡信息            if AdapterInfoDict["Action"] == "all":         #判断动作,是显示进,出或是全部的流量                if t % 10 == 0:                    print("%s:%s%s" % ("FaceName".rjust(10), "In".rjust(30), "Out".rjust(30)))                    print("%s"%"-".center(70,"-"))            elif AdapterInfoDict["Action"] == "in":                if t % 10 == 0:                    print("%s:%s" % ("FaceName".rjust(10), "In".rjust(30)))                    print("%s" % "-".center(40,"-"))            elif AdapterInfoDict["Action"] == "out":                if t % 10 == 0:                    print("%s:%s" % ("FaceName".rjust(10), "Out".rjust(30)))                    print("%s" % "-".center(40,"-"))            t += 1            for i in range(len(facesPre)):                if AdapterInfoDict["Action"] == "all":                    print("%s:%s%s"%(facesPre[i][0].rjust(10),str(facesSuf[i][1]-facesPre[i][1]).rjust(30),str(facesSuf[i][2]-facesPre[i][2]).rjust(30)))                elif AdapterInfoDict["Action"] == "in":                    print("%s:%s" % (facesPre[i][0].rjust(10), str(facesSuf[i][1] - facesPre[i][1]).rjust(30)))                elif AdapterInfoDict["Action"] == "out":                    print("%s:%s" % (facesPre[i][0].rjust(10), str(facesSuf[i][2] - facesPre[i][2]).rjust(30)))                else:                    print("The value of -a is a invalid action which you entered.")                    print("You can use -h to get help.")                    exitnum=89                    exit(exitnum)            facesPre=facesSuf            # time.sleep(int(AdapterInfoDict["Interval"]))    else:        for t in range(int(AdapterInfoDict["NumberOfDis"])):        #安装显示次数循环            time.sleep(int(AdapterInfoDict["Interval"]))            facesSuf = GetAdapterInfo()            #输出打印行头            if AdapterInfoDict["Action"] == "all":                if t % 10 == 0:                    print("%s:%s%s" % ("FaceName".rjust(10), "In".rjust(30), "Out".rjust(30)))                    print("%s" % "-".center(70,"-"))            elif AdapterInfoDict["Action"] == "in":                if t % 10 == 0:                    print("%s:%s" % ("FaceName".rjust(10), "In".rjust(30)))                    print("%s" % "-".center(40,"-"))            elif AdapterInfoDict["Action"] == "out":                if t % 10 == 0:                    print("%s:%s" % ("FaceName".rjust(10), "Out".rjust(30)))                    print("%s" % "-".center(40,"-"))            for i in range(len(facesPre)):                if AdapterInfoDict["Action"] == "all":                    print("%s:%s%s" % (facesPre[i][0].rjust(10), str(facesSuf[i][1] - facesPre[i][1]).rjust(30),                                       str(facesSuf[i][2] - facesPre[i][2]).rjust(30)))                elif AdapterInfoDict["Action"] == "in":                    print("%s:%s" % (facesPre[i][0].rjust(10), str(facesSuf[i][1] - facesPre[i][1]).rjust(30)))                elif AdapterInfoDict["Action"] == "out":                    print("%s:%s" % (facesPre[i][0].rjust(10), str(facesSuf[i][2] - facesPre[i][2]).rjust(30)))                else:                    print("The value of -a is a invalid action which you entered.")                    print("You can use -h to get help.")                    exitnum = 88                    exit(exitnum)            facesPre = facesSuf            # time.sleep(int(AdapterInfoDict["Interval"]))    exit(exitnum)

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

网卡流量监控脚本,python实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

网卡流量监控脚本,python实现

使用-h获取帮助在Python2.7版本以上执行脚本获取:https://github.com/raysuen/AdapterMonitor内容:#!/usr/bin/env python# _*_coding:utf-8_*_# Auth
2023-06-05

一个监控网卡流量的shell脚本

实现代码:#!/bin/basheth_in_old=$(ifconfig eth0|grep "RX bytes"|sed 's/RX bytes://'|awk '{print $1}') eth_out_old=$(ifconfig
2022-06-04

怎么用shell写一个监控网卡流量的脚本

本篇内容介绍了“怎么用shell写一个监控网卡流量的脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实现代码:#!/bin/basheth
2023-06-09

linux下监控网络流量的脚本

我看了下,linux下的/proc/net/dev记录了每块网卡发送和接受的包和字节数。因此萌生想法,写了一个。运行效果: [root@74-82-173-217 ~]# ./net.sh Current Ip: inet addr:74
2022-06-04

graphite,python监控网卡流

由于我发的东西在51CTO上都变成转载了,蛋疼。想跟我交流的朋友,去我的百度个人空间吧,51CTO不再更新了http://hi.baidu.com/wsdfw
2023-01-31

Shell脚本查看网卡实时流量

#!/bin/bashwhile [ "1" ]doeth=$1RXpre=$(cat /proc/net/dev | grep $eth | tr : " " | awk '{print $2}')TXpre=$(cat /proc/ne
2022-06-04

Linux用户建立脚本/猜字游戏/网卡流量监控介绍

目录1.用户建立脚本2.猜字游戏3.网卡流量监控1.用户建立脚本 (1)设计文件判断模块(2)设计用户建立(3)文件内容脚本内容#!/bin/bash USERADD(){ #用户创建函数RN=$(sed -n '$=' $1)f
2022-06-04

怎么用shell脚本实现LINUX下的流量监控

本篇内容主要讲解“怎么用shell脚本实现LINUX下的流量监控”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用shell脚本实现LINUX下的流量监控”吧!一、脚本源码# vi /etc/
2023-06-09

LINUX下的流量监控shell脚本

最近比较忙,好久没更新博客了,今天刚好不忙写了一个流量监控脚本.测试在centos下已通过,有需要的朋友可以试试,有BUG或者需要添加其他功能话可以留言哦.一、脚本源码# vi /etc/rc.d/traffic_monitor.sh---
2022-06-04

Linux命令行下的网络流量监控脚本

在Linux命令行下,有多种方法可以用来监控网络流量nethogsnethogs是一个实时监控进程网络带宽使用情况的工具。它可以让你了解哪个进程正在使用网络带宽。安装nethogs的命令如下:对于Debian/Ubuntu系统:sudo
Linux命令行下的网络流量监控脚本
2024-09-25

shell脚本实现监控shell脚本的执行流程及变量的值

很多时候,我们都会写shell程序来完成一些不用重复造轮子的时刻,但是,又因为shell语句中也会有函数,也会有变量,在运行后到底执行了哪些相关的操作,就需要对具体执行过程中的变量等可变的因素的监控,那么我们下面就写个小小的shell例子,
2022-06-04

Linux使用 iftop 实时监控网卡的流量

linux使用 iftop 实时监控网卡的流量,,具体内容如下所示: iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等。 在Linux/类Unix系统中可以使用top查看系统资源、进程、内存占用等信息。查看
2022-06-04

怎么在RedHat上安装MRTG监控本机网卡流量

这篇文章主要讲解了“怎么在RedHat上安装MRTG监控本机网卡流量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在RedHat上安装MRTG监控本机网卡流量”吧!RedHat上安装MR
2023-06-16

如何用shell脚本实现监控shell脚本的执行流程及变量的值

本篇内容主要讲解“如何用shell脚本实现监控shell脚本的执行流程及变量的值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用shell脚本实现监控shell脚本的执行流程及变量的值”吧!
2023-06-09

python实现批量监控网站

最近又新上了一部分站点,随着站点的增多,管理复杂性也上来了,俗话说:人多了不好带,我发现站点多了也不好管,因为这些站点里有重要的也有不重要的,重要核心的站点当然就管理的多一些,像一些万年都不出一次问题的,慢慢就被自己都淡忘了,冷不丁那天出个
2022-06-04

如何用Shell脚本查看网卡实时流量

本篇内容介绍了“如何用Shell脚本查看网卡实时流量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!代码如下:#!/bin/bashwhile
2023-06-09

Centos下如何利用Nload监控网卡流量

这篇文章主要讲解了“Centos下如何利用Nload监控网卡流量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Centos下如何利用Nload监控网卡流量”吧!nload是个很好用的流量监控
2023-06-10

怎么在RedHa上安装MRTG监控网卡流量

这篇文章主要讲解了“怎么在RedHa上安装MRTG监控网卡流量”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在RedHa上安装MRTG监控网卡流量”吧!系统环境:redhat9.0必备软
2023-06-16

shell 中怎么利用awk命令实时监控网卡流量

本篇文章为大家展示了shell 中怎么利用awk命令实时监控网卡流量,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。实现原理: [chengmo@localhost ~]$ cat /proc/net
2023-06-13

Linux下使用Shell脚本实现进程监控的流程

这篇文章主要介绍了Linux下使用Shell脚本实现进程监控,在Linux平台下,shell脚本监控是一个非常简单、方便的工具,它可以有效的对服务器、进程进行监控,对系统开发以及进程维护人员非常有帮助,需要的朋友可以参考下
2023-02-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录