旧博文,搬到 csdn
原文:http://rebootcat.com/2018/05/21/analyze_bandwidth/

python脚本采集bandwidth

经常要做一些 linux 系统上的性能分析或者采集 cpu/mem/bandwidth 上报到监控系统。

分享一个我平常常用到的 bandwidth 采集脚本,原理是分析 /proc/net/dev 文件, 脚本如下:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#脚本探测网卡流入带宽,循环输出import os
import time
import pdbfilename = './bandwidth.log''''
[root@~]$ cat /proc/net/dev
Inter-|   Receive                                                |  Transmitface |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressedlo: 1144779885672 14057281982    0    0    0     0          0         0 1144779885672 14057281982    0    0    0     0       0          0eth0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0eth1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0eth2: 26686495240 203608963    0    0    0     0          0         1 78529414436 193724479    0    0    0     0       0          0eth3: 10038847365 82467612    0    0    0     0          0         0 26209215795 64571217    0    0    0     0       0          0bond0: 36725342605 286076575    0    0    0     0          0         1 104738630231 258295696    0    0    0     0       0          0
'''def get_rx(interface = 'eth0'):rsbytes = []cmd = 'cat /proc/net/dev'r = os.popen(cmd).readlines()if len(r) < 4:print "error: can't find eth interface"return rsbytesinterface_dict = {}for i in xrange(2,len(r),1): #从 lo 开始interface_name = r[i].split()[0].split(':')[0]interface_dict[interface_name] = iif interface in interface_dict:position = interface_dict.get(interface)recvbytes = r[position].split()[1]sendbytes = r[position].split()[9]rsbytes.append(int(recvbytes))rsbytes.append(int(sendbytes))return rsbytesdef iftop_interface(interface = 'eth0'):begin = int(time.time())beginrs = get_rx(interface)if not beginrs:print 'error: can not find interface %s' % interfacereturnwhile True:time.sleep(2)endrs = get_rx(interface)end = int(time.time())rxrate = float((endrs[0] - beginrs[0])) / (end - begin)  * 8sxrate = float((endrs[1] - beginrs[1])) / (end - begin)  * 8tl = time.localtime(end)date = time.strftime('%m-%d %H:%M:%S', tl)cout = "%s  [recv(rate) = %s Mbps] [send(rate) = %s Mbps] \n" % (date,rxrate / 1000000,sxrate / 1000000)fout = open(filename,'a')fout.write(cout)fout.close()print cout#重新赋值,进入再次循环begin,beginrs = end,endrsif __name__ == "__main__":iftop_interface('ens33')

默认的网卡名字是 eth0,有些机器可能会不一样,只需要修改成你自己机器的网卡名称就行。

脚本可以直接在 我的github 进行下载。

其他

欢迎关注下我的其他脚本,平常可能会用到的一些脚本,整理了一下。

https://github.com/smaugx/dailytools

Blog:

  • rebootcat.com

  • email: linuxcode2niki@gmail.com

2018-05-21 于杭州
By 史矛革

python采集bandwidth信息相关推荐

  1. 【Python项目】用Python采集球员信息,成功预测到了世界杯球赛胜负?

    前言 halo,包子们上午好 世界杯都买了吧,球赛反着买,别墅靠大海 用Python采集球员信息,成功预测到了世界杯球赛胜负? 废话不多说,直接开整 相关文件 关注小编,私信小编领取哟! 当然别忘了一 ...

  2. python采集cpu信息

    旧博文,搬到 csdn 原文:http://rebootcat.com/2018/05/20/analyze_cpu/ python脚本采集cpu 经常要做一些 linux 系统上的性能分析或者采集 ...

  3. 用Python采集球员信息,成功预测到了球赛胜负?

    前言 嗨嗨,最近看球赛的朋友多吗 emm怎么说,我对这个虽然兴趣不是很大 但是还是想跟朋友赌赌,自己对这些球员也不是很熟悉,索性叫我的好同事帮我用Python采集了各国球员的一些信息,没料到竟预测成功 ...

  4. 用python采集球员信息,成功预测到球赛胜负?

    哈喽,最近看球赛的朋友多吗 虽然我不看球赛,也不d⚽️ 看到身边的人都在赌d,还挺有意思的,我也想试试,但是自己对这些球员也不是很熟悉,索性叫我的好同事帮我用Python采集了各国球员的一些信息,没料 ...

  5. python采集银行信息_Python:将银行扣费信息整理成账单

    全文以工商银行的扣费信息为例 工行储蓄卡,绑定支付宝.微信后日常使用,偶尔会转入,日常收到的通知短信有支付.转入.信使展期扣费三类: 1. 您尾号1234卡1月2日20:57POS支出(快捷支付)10 ...

  6. 【Python实战】Python采集高校信息

    前言 大家好,我们今天来爬取某站的高校名单,把其高校名单,成员和内容数获取下来,不过,我们发现这个网站比我们平时多了一个验证,下面看看我是怎么解决的. 环境使用 python 3.9 pycharm ...

  7. 成功预测到了球赛胜负?使用Python来采集球员信息

    前言 嗨嗨,最近看球赛的朋友多吗 emm怎么说,我对这个虽然兴趣不是很大 但是还是想跟朋友赌赌,自己对这些球员也不是很熟悉,索性叫我的好同事帮我用Python采集了各国球员的一些信息,没料到竟预测成功 ...

  8. 用Python采集财经数据信息并作可视化

    嗨嗨,大家好下午好,我是小圆 ~ 今天给大家分享一下,如何用python采集财经数据信息并作可视化 开发环境: 解释器版本: python 3.8 代码编辑器: pycharm 2021.2 requ ...

  9. 利用python采集相关网站信息(函数化)

    from bs4 import BeautifulSoup from MysqlTest import * import requests import time import datetime#是否 ...

最新文章

  1. linux周期记录内存信息,linux top显示信息详解
  2. python哪些模块用于数据分析_python数据解析模块之glom模块的使用(一)
  3. Java 基于 TCP/IP 实现 Socket中的多客户端通信
  4. ubuntu vim保存退出命令_vim极为详细的教程(一)基本操作
  5. Slack设置根据关键字自动提醒的小技巧
  6. POJ 3258 River Hopscotch
  7. 打造大数据和AI能力底座 联通大数据深度参与“新基建”
  8. MQTT(1)---物联网核心之MQTT(一)
  9. 文字过多以省略号代替,放在文字上会显示title信息提示
  10. ACM 美素数 (没AC)
  11. RedMonk最新编程语言排行榜出炉:JS霸榜,C++下降至第7
  12. mongodb,spring data api常用总结
  13. 一.Spring boot食用指南:HELLO WORLD
  14. 用java做一个小游戏源代码_用java编写的小游戏源代码分析
  15. Linux界面介绍及基础知识
  16. 怎样把pdf转换成word-多语言ocr支持
  17. 2022年聚合工艺特种作业证考试题库及在线模拟考试
  18. Simulink代码生成:通过Matlab Function集成C函数
  19. 计蒜客 青出于蓝胜于蓝 dfs序+树状
  20. 表格进阶03——简历制作(用表格布局)

热门文章

  1. 网站服务器部署注意事项,服务器部署改云部署注意事项
  2. 【radar】毫米波雷达-相机-激光雷达融合相关论文汇总(特征融合、RPN融合、弱监督融合、决策融合、深度估计、跟踪)(5)
  3. CS131专题-8:图像纹理
  4. P2114 [NOI2014]起床困难综合症
  5. xlrd.biffh.XLRDError: Excel xlsx file; not supported解决方法
  6. 一、多个txt文件合并成1个txt文件
  7. C/C++数组初始化的一些误区
  8. 【力扣网练习题】回文数
  9. PBR游戏3D模型合集包 PBR Game 3D-Models Bundle February 2022
  10. leetcode-402 移掉K位数组