Python脚本实现网卡流量监控
2019/7/13 21:35:26
本文主要是介绍Python脚本实现网卡流量监控,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#/usr/bin/env/python #coding=utf-8 import sys,re,time,os maxdata = 50000 #单位KB memfilename = '/tmp/newnetcardtransdata.txt' netcard = '/proc/net/dev' def checkfile(filename): if os.path.isfile(filename): pass else: f = open(filename, 'w') f.write('0') f.close() def get_net_data(): nc = netcard or '/proc/net/dev' fd = open(nc, "r") netcardstatus = False for line in fd.readlines(): if line.find("eth0") > 0: netcardstatus = True field = line.split() recv = field[0].split(":")[1] recv = recv or field[1] send = field[8] if not netcardstatus: fd.close() print 'Please setup your netcard' sys.exit() fd.close() return (float(recv), float(send)) def monfirst(filename): nowtime = time.strftime('%m-%d %H:%M',time.localtime(time.time())) sec = time.localtime().tm_sec if nowtime == '01-01 00:00': if sec < 10: f = open(filename, 'w') f.write('0') f.close() def net_loop(): (recv, send) = get_net_data() checkfile(memfilename) monfirst(memfilename) lasttransdaraopen = open(memfilename,'r') lasttransdata = lasttransdaraopen.readline() lasttransdaraopen.close() totaltrans = int(lasttransdata) or 0 while True: time.sleep(3) (new_recv, new_send) = get_net_data() recvdata = (new_recv - recv) / 1024 senddata = (new_send - send) / 1024 totaltrans += int(recvdata) totaltrans += int(senddata) memw = open(memfilename,'w') memw.write(str(totaltrans)) memw.close() if totaltrans >= maxdata: os.system('init 0') if __name__ == "__main__": net_loop()
用ROOT权限运行,maxdata为最大流量限制 超过这个限制,系统自动关机 当然,你可以改os.system('init 0')为你想要的命令 主要是现在VPS都限制流量,才搞了这个小脚本
这篇关于Python脚本实现网卡流量监控的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python