須要遠程簡單地得到每臺服務器的cpu與memory使用狀況,用python寫了一個腳本,發佈一個http端口,當瀏覽器連上時,以json格式提供。html
用curl鏈接時輸出:python
#curl localhost:9999 {"cpu": 10, "mem": 50}
代碼以下:json
import json import os import shutil import subprocess import sys import time from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer from io import BytesIO from SocketServer import ThreadingMixIn from threading import Thread cpu_mem_info={'cpu':0,'mem':0} def read_cpu_usage(): with open('/proc/stat','r') as f: line = f.readline() fields = line.split() total = long(fields[1])+long(fields[2])+long(fields[3])+long(fields[4])+long(fields[5])+long(fields[6])+long(fields[7]) used = long(fields[1])+long(fields[2])+long(fields[3]) print(used,total) return (used,total) def cpu_monitor(): global cpu_mem_info while True: (old_used,old_total) = read_cpu_usage() time.sleep(3) (new_used,new_total) = read_cpu_usage() usage = (new_used-old_used)*100/(new_total-old_total) cpu_mem_info['cpu'] = usage print("cpu_monitor:{0}({1})".format(usage,time.asctime())) def read_mem_usage(): with open('/proc/meminfo','r') as f: line = f.readline() fields = line.split() total = long(fields[1]) line = f.readline() fields = line.split() used = long(fields[1]) return used*100/total def mem_monitor(): global cpu_mem_info while True: usage = read_mem_usage() cpu_mem_info['mem'] = usage print("mem_monitor:{0}({1}".format(usage,time.asctime())) time.sleep(3) class CpuMemServerHandler(BaseHTTPRequestHandler): global cpu_mem_info def do_GET(self): self.send_head() f = BytesIO(json.dumps(cpu_mem_info).encode()) f.seek(0) shutil.copyfileobj(f,self.wfile) def send_head(self): self.send_response(200) self.send_header("Content-type",'text/html') self.end_headers() class CpuMemServer(ThreadingMixIn,HTTPServer): pass if __name__ == '__main__': cpu_thread = Thread(target=cpu_monitor,args=()) cpu_thread.setDaemon(True) cpu_thread.start() mem_thread = Thread(target=mem_monitor,args=()) mem_thread.setDaemon(True) mem_thread.start() server = CpuMemServer(('',9999),CpuMemServerHandler) server.serve_forever()
https模式?瀏覽器
####..... server = CpuMemServer(('',9999),CpuMemServerHandler) server.socket = ssl.wrap_socket(server.socket,keyfile="mykey.key",certfile="mycert.crt",server_side=True) server.serve_forever()