本文共 2202 字,大约阅读时间需要 7 分钟。
方法1:通过系统文件或者系统命令来获取;
import osimport commandsimport stringimport socketimport jsondef base_info(): """ :return HOSTNAME, IPADDR, CPU, CPUIDLE, MEM, AVAI_MEM, VERSION(6/7), MACHINE(64/32) """ ifname='eth0' osinfo = os.uname() HOSTNAME = osinfo[1] VERSION = osinfo[2].split('.')[-2] MACHINE = osinfo[-1] mem_cmd = "awk '/MemTotal/{printf(\"%0.2f\",$2/1000/1000)}' /proc/meminfo" MEM = int(round(float(commands.getoutput(mem_cmd)))) cpu_cmd = "awk '/processor/{cpu+=1}END{print cpu}' /proc/cpuinfo" CPU = commands.getoutput(cpu_cmd) if VERSION == 'el7': avai_mem_cmd = "awk '/MemAvailable/ {printf(\"%0.2f\",$2/1000/1000)}' /proc/meminfo" AVAI_MEM = commands.getoutput(avai_mem_cmd) cpuidle_cmd = "top -bcn 1 | head |awk '/Cpu/ {print $8}'" CPUIDLE = commands.getoutput(cpuidle_cmd) if VERSION == 'el6': ##centos6 可用内存计算方法:MemFree+Buffers+Cached avai_mem_cmd = "sed -n '2,4p' /proc/meminfo |awk '{sum+=$2}END{printf(\"%.2f\",sum/1000/1000)}'" AVAI_MEM = commands.getoutput(avai_mem_cmd) cpuidle_cmd = "top -bcn 1 | sed -n 's/ //g;3p' | awk -F\"%|,\" '{print $7}'" CPUIDLE = commands.getoutput(cpuidle_cmd) unix_socker = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) IPADDR = socket.inet_ntoa(fcntl.ioctl( unix_socker.fileno(), 0x8915, # SIOCGIFADDR struct.pack('256s', ifname[:15]) )[20:24]) return HOSTNAME, IPADDR, CPU, CPUIDLE, MEM, AVAI_MEM, VERSION, MACHINE
方法2:通过 psutil 模块来获取
import osimport commandsimport stringimport socketimport jsonimport psutildef base_info(): """ :return HOSTNAME, IPADDR, CPU, CPUIDLE, MEM, AVAI_MEM, VERSION(6/7), MACHINE(64/32) """ ifname='eth0' osinfo = psutil.os.uname() HOSTNAME = osinfo[1] VERSION = osinfo[2].split('.')[-2] MACHINE = osinfo[-1] CPUIDLE = 100-psutil.cpu_percent(interval=1) CPU = psutil.cpu_count() mem_info = psutil.virtual_memory() MEM = mem_info.total/1024/1024/1000 AVAI_MEM = mem_info.available/1024/1024/1000 net_info = psutil.net_if_addrs() IPADDR = net_info['eth0'][0].address return HOSTNAME, IPADDR, CPU, CPUIDLE, MEM, AVAI_MEM, VERSION, MACHINE
转载地址:http://gfxkm.baihongyu.com/