|
|
|
# coding:utf-8
|
|
|
|
|
|
|
|
import time
|
|
|
|
import psutil
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
|
|
|
from flask import Flask, session
|
|
|
|
from flask import Blueprint, render_template
|
|
|
|
from flask import jsonify
|
|
|
|
|
|
|
|
sys.path.append("class/")
|
|
|
|
import public
|
|
|
|
|
|
|
|
|
|
|
|
system = Blueprint('system', __name__, template_folder='templates')
|
|
|
|
|
|
|
|
|
|
|
|
def GetCpuInfo(interval=1):
|
|
|
|
# 取CPU信息
|
|
|
|
cpuCount = psutil.cpu_count()
|
|
|
|
used = psutil.cpu_percent(interval=interval)
|
|
|
|
return used, cpuCount
|
|
|
|
|
|
|
|
|
|
|
|
def GetLoadAverage():
|
|
|
|
c = os.getloadavg()
|
|
|
|
data = {}
|
|
|
|
data['one'] = float(c[0])
|
|
|
|
data['five'] = float(c[1])
|
|
|
|
data['fifteen'] = float(c[2])
|
|
|
|
data['max'] = psutil.cpu_count() * 2
|
|
|
|
data['limit'] = data['max']
|
|
|
|
data['safe'] = data['max'] * 0.75
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
|
|
def GetMemInfo():
|
|
|
|
# 取内存信息
|
|
|
|
mem = psutil.virtual_memory()
|
|
|
|
memInfo = {'memTotal': mem.total / 1024 / 1024,
|
|
|
|
'memFree': mem.free / 1024 / 1024,
|
|
|
|
# 'memBuffers': mem.buffers / 1024 / 1024,
|
|
|
|
# 'memCached': mem.cached / 1024 / 1024
|
|
|
|
}
|
|
|
|
|
|
|
|
memInfo['memRealUsed'] = memInfo['memTotal'] - \
|
|
|
|
memInfo['memFree']
|
|
|
|
#- memInfo['memBuffers'] - memInfo['memCached']
|
|
|
|
return memInfo
|
|
|
|
|
|
|
|
|
|
|
|
def GetBootTime():
|
|
|
|
conf = public.readFile('/proc/uptime').split()
|
|
|
|
tStr = float(conf[0])
|
|
|
|
min = tStr / 60
|
|
|
|
hours = min / 60
|
|
|
|
days = math.floor(hours / 24)
|
|
|
|
hours = math.floor(hours - (days * 24))
|
|
|
|
min = math.floor(min - (days * 60 * 24) - (hours * 60))
|
|
|
|
return public.getMsg('SYS_BOOT_TIME', (str(int(days)), str(int(hours)), str(int(min))))
|
|
|
|
|
|
|
|
|
|
|
|
def GetSystemVersion():
|
|
|
|
# 取操作系统版本
|
|
|
|
version = public.readFile('/etc/redhat-release')
|
|
|
|
if not version:
|
|
|
|
version = public.readFile(
|
|
|
|
'/etc/issue').strip().split("\n")[0].replace('\\n', '').replace('\l', '').strip()
|
|
|
|
else:
|
|
|
|
version = version.replace('release ', '').strip()
|
|
|
|
return version
|
|
|
|
|
|
|
|
|
|
|
|
@system.route("/network")
|
|
|
|
def network():
|
|
|
|
# 取网络流量信息
|
|
|
|
networkIo = psutil.net_io_counters()[:4]
|
|
|
|
if not hasattr(session, 'otime'):
|
|
|
|
session['up'] = networkIo[0]
|
|
|
|
session['down'] = networkIo[1]
|
|
|
|
session['otime'] = time.time()
|
|
|
|
|
|
|
|
ntime = time.time()
|
|
|
|
networkInfo = {}
|
|
|
|
networkInfo['upTotal'] = networkIo[0]
|
|
|
|
networkInfo['downTotal'] = networkIo[1]
|
|
|
|
networkInfo['up'] = round(float(
|
|
|
|
networkIo[0] - session['up']) / 1024 / (ntime - session['otime']), 2)
|
|
|
|
networkInfo['down'] = round(
|
|
|
|
float(networkIo[1] - session['down']) / 1024 / (ntime - session['otime']), 2)
|
|
|
|
networkInfo['downPackets'] = networkIo[3]
|
|
|
|
networkInfo['upPackets'] = networkIo[2]
|
|
|
|
|
|
|
|
session['up'] = networkIo[0]
|
|
|
|
session['down'] = networkIo[1]
|
|
|
|
session['otime'] = time.time()
|
|
|
|
|
|
|
|
networkInfo['cpu'] = GetCpuInfo()
|
|
|
|
networkInfo['load'] = GetLoadAverage()
|
|
|
|
return jsonify(networkInfo)
|
|
|
|
|
|
|
|
|
|
|
|
@system.route("/diskinfo")
|
|
|
|
def diskinfo():
|
|
|
|
# 取磁盘分区信息
|
|
|
|
temp = public.ExecShell("df -h -P|grep '/'|grep -v tmpfs")[0]
|
|
|
|
tempInodes = public.ExecShell("df -i -P|grep '/'|grep -v tmpfs")[0]
|
|
|
|
temp1 = temp.split('\n')
|
|
|
|
tempInodes1 = tempInodes.split('\n')
|
|
|
|
diskInfo = []
|
|
|
|
n = 0
|
|
|
|
cuts = ['/mnt/cdrom', '/boot', '/boot/efi', '/dev',
|
|
|
|
'/dev/shm', '/run/lock', '/run', '/run/shm', '/run/user']
|
|
|
|
for tmp in temp1:
|
|
|
|
n += 1
|
|
|
|
inodes = tempInodes1[n - 1].split()
|
|
|
|
disk = tmp.split()
|
|
|
|
if len(disk) < 5:
|
|
|
|
continue
|
|
|
|
if disk[1].find('M') != -1:
|
|
|
|
continue
|
|
|
|
if disk[1].find('K') != -1:
|
|
|
|
continue
|
|
|
|
if len(disk[5].split('/')) > 4:
|
|
|
|
continue
|
|
|
|
if disk[5] in cuts:
|
|
|
|
continue
|
|
|
|
arr = {}
|
|
|
|
arr['path'] = disk[5]
|
|
|
|
tmp1 = [disk[1], disk[2], disk[3], disk[4]]
|
|
|
|
arr['size'] = tmp1
|
|
|
|
arr['inodes'] = [inodes[1], inodes[2], inodes[3], inodes[4]]
|
|
|
|
if disk[5] == '/':
|
|
|
|
bootLog = '/tmp/panelBoot.pl'
|
|
|
|
if disk[2].find('M') != -1:
|
|
|
|
if os.path.exists(bootLog):
|
|
|
|
os.system('rm -f ' + bootLog)
|
|
|
|
else:
|
|
|
|
pass
|
|
|
|
if not os.path.exists(bootLog):
|
|
|
|
os.system('sleep 1 &')
|
|
|
|
# print arr
|
|
|
|
diskInfo.append(arr)
|
|
|
|
return jsonify(diskInfo)
|
|
|
|
|
|
|
|
|
|
|
|
@system.route("/update_panel")
|
|
|
|
def updatePanel():
|
|
|
|
return public.returnJson(False, "12")
|
|
|
|
|
|
|
|
|
|
|
|
@system.route("/system_total")
|
|
|
|
def systemTotal():
|
|
|
|
# 取系统统计信息
|
|
|
|
data = GetMemInfo()
|
|
|
|
cpu = GetCpuInfo(1)
|
|
|
|
data['cpuNum'] = cpu[1]
|
|
|
|
data['cpuRealUsed'] = cpu[0]
|
|
|
|
# data['time'] = GetBootTime()
|
|
|
|
# data['system'] = GetSystemVersion()
|
|
|
|
data['isuser'] = public.M('users').where('username=?', ('admin',)).count()
|
|
|
|
data['version'] = '0.0.1'
|
|
|
|
return jsonify(data)
|
|
|
|
|
|
|
|
|
|
|
|
@system.route("/disk_info")
|
|
|
|
def diskInfo():
|
|
|
|
# 取磁盘分区信息
|
|
|
|
temp = public.execShell("df -h -P|grep '/'|grep -v tmpfs")[0]
|
|
|
|
tempInodes = public.execShell("df -i -P|grep '/'|grep -v tmpfs")[0]
|
|
|
|
temp1 = temp.split('\n')
|
|
|
|
tempInodes1 = tempInodes.split('\n')
|
|
|
|
diskInfo = []
|
|
|
|
n = 0
|
|
|
|
cuts = ['/mnt/cdrom', '/boot', '/boot/efi', '/dev',
|
|
|
|
'/dev/shm', '/run/lock', '/run', '/run/shm', '/run/user']
|
|
|
|
for tmp in temp1:
|
|
|
|
n += 1
|
|
|
|
inodes = tempInodes1[n - 1].split()
|
|
|
|
disk = tmp.split()
|
|
|
|
if len(disk) < 5:
|
|
|
|
continue
|
|
|
|
if disk[1].find('M') != -1:
|
|
|
|
continue
|
|
|
|
if disk[1].find('K') != -1:
|
|
|
|
continue
|
|
|
|
if len(disk[5].split('/')) > 4:
|
|
|
|
continue
|
|
|
|
if disk[5] in cuts:
|
|
|
|
continue
|
|
|
|
arr = {}
|
|
|
|
arr['path'] = disk[5]
|
|
|
|
tmp1 = [disk[1], disk[2], disk[3], disk[4]]
|
|
|
|
arr['size'] = tmp1
|
|
|
|
arr['inodes'] = [inodes[1], inodes[2], inodes[3], inodes[4]]
|
|
|
|
if disk[5] == '/':
|
|
|
|
bootLog = os.getcwd() + '/tmp/panelBoot.pl'
|
|
|
|
if disk[2].find('M') != -1:
|
|
|
|
if os.path.exists(bootLog):
|
|
|
|
os.system('rm -f ' + bootLog)
|
|
|
|
else:
|
|
|
|
if not os.path.exists(bootLog):
|
|
|
|
pass
|
|
|
|
diskInfo.append(arr)
|
|
|
|
return public.getJson(diskInfo)
|