def getSshInfoApi(self): file = '/etc/ssh/sshd_config' conf = mw.readFile(file) rep = "#*Port\s+([0-9]+)\s*\n" port = re.search(rep, conf).groups(0)[0] isPing = True try: if mw.isAppleSystem(): isPing = True else: file = '/etc/sysctl.conf' conf = mw.readFile(file) rep = "#*net\.ipv4\.icmp_echo_ignore_all\s*=\s*([0-9]+)" tmp = re.search(rep, conf).groups(0)[0] if tmp == '1': isPing = False except: isPing = True import system_api panelsys = system_api.system_api() version = panelsys.getSystemVersion() if os.path.exists('/usr/bin/apt-get'): if os.path.exists('/etc/init.d/sshd'): cmd = "service sshd status | grep -P '(dead|stop)'|grep -v grep" status = mw.execShell(cmd) else: cmd = "service ssh status | grep -P '(dead|stop)'|grep -v grep" status = mw.execShell(cmd) else: if version.find(' 7.') != -1: cmd = "systemctl status sshd.service | grep 'dead'|grep -v grep" status = mw.execShell(cmd) else: cmd = "/etc/init.d/sshd status | grep -e 'stopped' -e '已停'|grep -v grep" status = mw.execShell(cmd) if len(status[0]) > 3: status = False else: status = True data = {} data['port'] = port data['status'] = status data['ping'] = isPing if mw.isAppleSystem(): data['firewall_status'] = False else: data['firewall_status'] = self.getFwStatus() return mw.getJson(data)
def setApi(self): webname = request.form.get('webname', '') port = request.form.get('port', '') host_ip = request.form.get('host_ip', '') domain = request.form.get('domain', '') sites_path = request.form.get('sites_path', '') backup_path = request.form.get('backup_path', '') if domain != '': reg = "^([\w\-\*]{1,100}\.){1,4}(\w{1,10}|\w{1,10}\.\w{1,10})$" if not re.match(reg, domain): return mw.returnJson(False, '主域名格式不正确') if int(port) >= 65535 or int(port) < 100: return mw.returnJson(False, '端口范围不正确!') if webname != mw.getConfig('title'): mw.setConfig('title', webname) if sites_path != mw.getWwwDir(): mw.setWwwDir(sites_path) if backup_path != mw.getWwwDir(): mw.setBackupDir(backup_path) if port != mw.getHostPort(): import system_api mw.setHostPort(port) system_api.system_api().restartMw() if host_ip != mw.getHostAddr(): mw.setHostAddr(host_ip) mhost = mw.getHostAddr() info = { 'uri': '/config', 'host': mhost + ':' + port } return mw.returnJson(True, '保存成功!', info)
def getSSHStatus(): if os.path.exists('/usr/bin/apt-get'): status = execShell("service ssh status | grep -P '(dead|stop)'") else: import system_api version = system_api.system_api().getSystemVersion() if version.find(' Mac ') != -1: return True if version.find(' 7.') != -1: status = execShell("systemctl status sshd.service | grep 'dead'") else: status = execShell( "/etc/init.d/sshd status | grep -e 'stopped' -e '已停'") if len(status[0]) > 3: status = False else: status = True return status
def restartMw(): import system_api system_api.system_api().restartMw()
def systemTask(): # 系统监控任务 try: import system_api import psutil import time sm = system_api.system_api() filename = 'data/control.conf' sql = db.Sql().dbfile('system') csql = mw.readFile('data/sql/system.sql') csql_list = csql.split(';') for index in range(len(csql_list)): sql.execute(csql_list[index], ()) cpuIo = cpu = {} cpuCount = psutil.cpu_count() used = count = 0 reloadNum = 0 network_up = network_down = diskio_1 = diskio_2 = networkInfo = cpuInfo = diskInfo = None while True: if not os.path.exists(filename): time.sleep(10) continue day = 30 try: day = int(mw.readFile(filename)) if day < 1: time.sleep(10) continue except: day = 30 tmp = {} # 取当前CPU Io tmp['used'] = psutil.cpu_percent(interval=1) if not cpuInfo: tmp['mem'] = sm.getMemUsed() cpuInfo = tmp if cpuInfo['used'] < tmp['used']: tmp['mem'] = sm.getMemUsed() cpuInfo = tmp # 取当前网络Io networkIo = psutil.net_io_counters()[:4] if not network_up: network_up = networkIo[0] network_down = networkIo[1] tmp = {} tmp['upTotal'] = networkIo[0] tmp['downTotal'] = networkIo[1] tmp['up'] = round(float((networkIo[0] - network_up) / 1024), 2) tmp['down'] = round(float((networkIo[1] - network_down) / 1024), 2) tmp['downPackets'] = networkIo[3] tmp['upPackets'] = networkIo[2] network_up = networkIo[0] network_down = networkIo[1] if not networkInfo: networkInfo = tmp if (tmp['up'] + tmp['down']) > (networkInfo['up'] + networkInfo['down']): networkInfo = tmp # 取磁盘Io # if os.path.exists('/proc/diskstats'): diskio_2 = psutil.disk_io_counters() if not diskio_1: diskio_1 = diskio_2 tmp = {} tmp['read_count'] = diskio_2.read_count - diskio_1.read_count tmp['write_count'] = diskio_2.write_count - diskio_1.write_count tmp['read_bytes'] = diskio_2.read_bytes - diskio_1.read_bytes tmp['write_bytes'] = diskio_2.write_bytes - diskio_1.write_bytes tmp['read_time'] = diskio_2.read_time - diskio_1.read_time tmp['write_time'] = diskio_2.write_time - diskio_1.write_time if not diskInfo: diskInfo = tmp else: diskInfo['read_count'] += tmp['read_count'] diskInfo['write_count'] += tmp['write_count'] diskInfo['read_bytes'] += tmp['read_bytes'] diskInfo['write_bytes'] += tmp['write_bytes'] diskInfo['read_time'] += tmp['read_time'] diskInfo['write_time'] += tmp['write_time'] diskio_1 = diskio_2 # print diskInfo if count >= 12: try: addtime = int(time.time()) deltime = addtime - (day * 86400) data = (cpuInfo['used'], cpuInfo['mem'], addtime) sql.table('cpuio').add('pro,mem,addtime', data) sql.table('cpuio').where("addtime<?", (deltime,)).delete() data = (networkInfo['up'] / 5, networkInfo['down'] / 5, networkInfo['upTotal'], networkInfo[ 'downTotal'], networkInfo['downPackets'], networkInfo['upPackets'], addtime) sql.table('network').add( 'up,down,total_up,total_down,down_packets,up_packets,addtime', data) sql.table('network').where( "addtime<?", (deltime,)).delete() # if os.path.exists('/proc/diskstats'): data = (diskInfo['read_count'], diskInfo['write_count'], diskInfo['read_bytes'], diskInfo[ 'write_bytes'], diskInfo['read_time'], diskInfo['write_time'], addtime) sql.table('diskio').add( 'read_count,write_count,read_bytes,write_bytes,read_time,write_time,addtime', data) sql.table('diskio').where( "addtime<?", (deltime,)).delete() # LoadAverage load_average = sm.getLoadAverage() lpro = round( (load_average['one'] / load_average['max']) * 100, 2) if lpro > 100: lpro = 100 sql.table('load_average').add('pro,one,five,fifteen,addtime', (lpro, load_average[ 'one'], load_average['five'], load_average['fifteen'], addtime)) lpro = None load_average = None cpuInfo = None networkInfo = None diskInfo = None count = 0 reloadNum += 1 if reloadNum > 1440: reloadNum = 0 restartMw() except Exception, ex: print str(ex) del(tmp) time.sleep(5) count += 1 except Exception, ex: print str(ex) import time time.sleep(30) systemTask()
# coding:utf-8 import time import sys import os chdir = os.getcwd() sys.path.append(chdir + '/class/core') sys.path.append("/usr/local/lib/python2.7/site-packages") import mw import system_api cpu_info = system_api.system_api().getCpuInfo() workers = cpu_info[1] if not os.path.exists(os.getcwd() + '/logs'): os.mkdir(os.getcwd() + '/logs') mw_port = mw.readFile('data/port.pl') if mw_port: mw_port.strip() bind = [] if os.path.exists('data/ipv6.pl'): bind.append('[0:0:0:0:0:0:0:0]:%s' % mw_port) else: bind.append('0.0.0.0:%s' % mw_port) if workers > 2: workers = 2 threads = workers * 1 backlog = 512 reload = False