diff --git a/.gitignore b/.gitignore index 425a502b4..2e8c4a240 100644 --- a/.gitignore +++ b/.gitignore @@ -141,6 +141,7 @@ data/restart.pl data/ssl.pl data/edate.pl data/osname.pl +data/only_netio_counters.pl data/system.db-journal data/hook_*.json @@ -153,3 +154,4 @@ plugins/bk_demo debug.out + diff --git a/class/core/system_api.py b/class/core/system_api.py index 901e38627..f176642be 100755 --- a/class/core/system_api.py +++ b/class/core/system_api.py @@ -437,12 +437,35 @@ class system_api: os.system('echo > /tmp/panelBoot.pl') return total, count + def psutilNetIoCounters(self): + ''' + 统计网卡流量 + ''' + stat_pl = 'data/only_netio_counters.pl' + if os.path.exists(stat_pl): + local_lo = (0, 0, 0, 0) + ioName = psutil.net_io_counters(pernic=True).keys() + for x in ioName: + + if x.find("lo") > -1: + local_lo = psutil.net_io_counters( + pernic=True).get(x)[:4] + + all_io = psutil.net_io_counters()[:4] + result_io = tuple([all_io[i] - local_lo[i] + for i in range(0, len(all_io))]) + + # print(local_lo) + # print(all_io) + # print(result_io) + return result_io + return psutil.net_io_counters()[:4] + def getNetWork(self): - # return self.GetNetWorkApi(get); # 取网络流量信息 try: # 取网络流量信息 - networkIo = psutil.net_io_counters()[:4] + networkIo = self.psutilNetIoCounters() if not "otime" in session: session['up'] = networkIo[0] session['down'] = networkIo[1] @@ -470,38 +493,7 @@ class system_api: return networkInfo except Exception as e: - # print(e) - return None - - def getNetWorkApi(self): - # 取网络流量信息 - try: - tmpfile = 'data/network.temp' - networkIo = psutil.net_io_counters()[:4] - - if not os.path.exists(tmpfile): - mw.writeFile(tmpfile, str( - networkIo[0]) + '|' + str(networkIo[1]) + '|' + str(int(time.time()))) - - lastValue = mw.readFile(tmpfile).split('|') - - ntime = time.time() - networkInfo = {} - networkInfo['upTotal'] = networkIo[0] - networkInfo['downTotal'] = networkIo[1] - networkInfo['up'] = round( - float(networkIo[0] - int(lastValue[0])) / 1024 / (ntime - int(lastValue[2])), 2) - networkInfo['down'] = round( - float(networkIo[1] - int(lastValue[1])) / 1024 / (ntime - int(lastValue[2])), 2) - networkInfo['downPackets'] = networkIo[3] - networkInfo['upPackets'] = networkIo[2] - - mw.writeFile(tmpfile, str( - networkIo[0]) + '|' + str(networkIo[1]) + '|' + str(int(time.time()))) - - # networkInfo['cpu'] = self.GetCpuInfo(0.1) - return networkInfo - except: + print("getNetWork error:", e) return None def getNetWorkIoData(self, start, end): @@ -567,14 +559,19 @@ class system_api: def setControl(self, stype, day): filename = 'data/control.conf' + stat_pl = 'data/only_netio_counters.pl' if stype == '0': - mw.execShell("rm -f " + filename) + mw.execShell("rm -rf " + filename) elif stype == '1': _day = int(day) if _day < 1: return mw.returnJson(False, "设置失败!") mw.writeFile(filename, day) + elif stype == '2': + mw.execShell("rm -rf " + stat_pl) + elif stype == '3': + mw.execShell("echo 'True' > " + stat_pl) elif stype == 'del': if not mw.isRestart(): return mw.returnJson(False, '请等待所有安装任务完成再执行') @@ -597,6 +594,12 @@ class system_api: else: data['day'] = 30 data['status'] = False + + if os.path.exists(stat_pl): + data['stat_all_status'] = True + else: + data['stat_all_status'] = False + return mw.getJson(data) return mw.returnJson(True, "设置成功!") diff --git a/route/static/app/control.js b/route/static/app/control.js index b61daadbb..eb9ec9e12 100755 --- a/route/static/app/control.js +++ b/route/static/app/control.js @@ -77,7 +77,7 @@ $(".networkbtn").click(function(){ function Wday(day,name){ var now = (new Date().getTime())/1000; if(day==0){ - var b = (new Date(GetToday() + " 00:00:01").getTime())/1000; + var b = (new Date(getToday() + " 00:00:01").getTime())/1000; b = Math.round(b); var e = Math.round(now); } @@ -111,7 +111,7 @@ function Wday(day,name){ } } -function GetToday(){ +function getToday(){ var mydate = new Date(); var str = "" + mydate.getFullYear() + "/"; str += (mydate.getMonth()+1) + "/"; @@ -123,30 +123,51 @@ function GetToday(){ function getStatus(){ loadT = layer.msg('正在读取,请稍候...',{icon:16,time:0}) $.post('/system/set_control','type=-1',function(rdata){ - // console.log(rdata); layer.close(loadT); + if(rdata.status){ - $("#openJK").html("") + $("#openJK").html(""); + } else { + $("#openJK").html(""); } - else{ - $("#openJK").html("") + + if(rdata.stat_all_status){ + $("#statAll").html(""); + } else{ + $("#statAll").html(""); } - $("#saveDay").val(rdata.day) + + $("#save_day").val(rdata.day); + },'json'); } getStatus(); //设置监控状态 -function setControl(act){ - var day = $("#saveDay").val() - if(day < 1){ - layer.msg('保存天数不合法!',{icon:2}); - return; - } - if(act){ - var type = $("#ctswitch").prop('checked')?'1':'0'; - }else{ +function setControl(act, value=false){ + + if (act == 'openjk'){ var type = $("#ctswitch").prop('checked')?'0':'1'; + var day = $("#save_day").val(); + if(day < 1){ + layer.msg('保存天数不合法!',{icon:2}); + return; + } + } else if (act == 'stat'){ + var type = $("#stat_witch").prop('checked')?'2':'3'; + } else if (act == 'save_day'){ + var type = $("#ctswitch").prop('checked')?'1':'0'; + var day = $("#save_day").val(); + + if(type == 0){ + layer.msg('先开启监控!',{icon:2}); + return; + } + + if(day < 1){ + layer.msg('保存天数不合法!',{icon:2}); + return; + } } loadT = layer.msg('正在处理,请稍候...',{icon:16,time:0}) @@ -156,13 +177,13 @@ function setControl(act){ },'json'); } + //清理记录 function closeControl(){ layer.confirm('您真的清空所有监控记录吗?',{title:'清空记录',icon:3,closeBtn:2}, function() { loadT = layer.msg('正在处理,请稍候...',{icon:16,time:0}) $.post('/system/set_control','type=del',function(rdata){ layer.close(loadT); - // $.get('/system?action=ReWeb',function(){}); layer.msg(rdata.msg,{icon:rdata.status?1:2}); },'json'); }); diff --git a/route/templates/default/control.html b/route/templates/default/control.html index b1131205d..cf6e306a3 100755 --- a/route/templates/default/control.html +++ b/route/templates/default/control.html @@ -13,20 +13,26 @@