python获取虚拟机资源 保存到文件中 文件超过一定大小删除或转存

#!/usr/bin/python
import os
import psutil   # cd C:Python36-32Scripts  pip install psutil
file = '/Users/jian.wang13/code/test/0630.txt'
# 获取本机磁盘使用率和剩余空间G信息
def get_disk_info():
    # 循环磁盘分区
    content = ""
    for disk in psutil.disk_partitions():
        # 读写方式 光盘 or 有效磁盘类型
        if 'cdrom' in disk.opts or disk.fstype == '':
            continue
        disk_name_arr = disk.device.split(':')
        disk_name = disk_name_arr[0]
        disk_info = psutil.disk_usage(disk.device)
        # 磁盘剩余空间,单位G
        free_disk_size = disk_info.free//1024//1024//1024
        # 当前磁盘使用率和剩余空间G信息
        info = "%s盘使用率:%s%%, 剩余空间:%iG" % (disk_name, str(disk_info.percent), free_disk_size)
        # print(info)
        # 拼接多个磁盘的信息
        content = content + info
#    print(content)
    return content
# cpu信息
def get_cpu_info():
    cpu_percent = psutil.cpu_percent(interval=1)
    cpu_info = "CPU使用率:%i%%" % cpu_percent
    print(cpu_info)
    # return cpu_info
# 内存信息
def get_memory_info():
    virtual_memory = psutil.virtual_memory()
    used_memory = virtual_memory.used/1024/1024/1024
    free_memory = virtual_memory.free/1024/1024/1024
    memory_percent = virtual_memory.percent
    memory_info = "内存使用:%0.2fG,使用率%0.1f%%,剩余内存:%0.2fG" % (used_memory, memory_percent, free_memory)
    print(memory_info)
    # return memory_info

#get_disk_info()
#get_cpu_info()
#get_memory_info()
with open(file,'a+',encoding="utf-8") as f:
    f.write(str(get_disk_info()))
fsize = os.path.getsize(file)
#print(fsize)
if fsize > 1000:
    os.remove(file)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

获取内存

import os
def mem_usage():
    f = os.popen("free -m |grep Mem |awk '{print $2,$3,$4}'")
    return f.read()

if __name__ == "__main__":
    print  mem_usage()

获取负载

import os
def load_avg():
    f = os.popen("uptime | sed 's/,//g' | awk '{print $8,$9,$10}'")
    return f.read().strip()

if __name__ == "__main__":
    print load_avg()

获取磁盘

import os
def disk_usage():
    f = os.popen("df -h | head -2 | tail -1 | awk '{print $2,$3,$4,$5}'")
    return f.read().strip()

if __name__ == "__main__":
    print disk_usage()

获取cpu

import os
def cpu_usage():
    f = os.popen("top -bi -n 1| awk '{print $2,$4}'").read().split('\n')[2]
    return f

if __name__ == "__main__":
    print cpu_usage()

接下来就是main函数

#!/usr/bin/env python
#coding:utf-8
'''
file:main.py
date:9/8/17 10:21 AM
author:lockey
email:lockey@123.com
desc:
'''
from __future__ import division
import MySQLdb as mysql
import time
import cpu,disk,load,mem

username = 'root'
password  = 'redhat'
host = 'localhost'
deleteall = False
conn = mysql.connect(host,username,password)
cur = conn.cursor()
sqldisk = 'insert into diskinfo values(%s,%s,%s,%s,%s)'
sqlmem = 'insert into meminfo values(%s,%s,%s,%s)'
sqlcpu = 'insert into cpuinfo values(%s,%s,%s,%s)'
sqlload = 'insert into loadinfo values(%s,%s,%s,%s)'
try:
    cur.execute('CREATE DATABASE hostinfo')
except:
    pass
finally:
    conn.select_db('hostinfo')
    try:
        cur.execute('CREATE TABLE diskinfo (total varchar(10), used varchar(10), avail varchar(10), usedPercent varchar(10), getTime varchar(30))')
        cur.execute('CREATE TABLE meminfo (total varchar (20), used varchar(10), free varchar(10),getTime varchar(30))')
        cur.execute('CREATE TABLE loadinfo (time1 varchar(10), time5 varchar(10), time10 varchar(10), getTime varchar(30))')
        cur.execute('CREATE TABLE cpuinfo (usrused varchar(10), sysused varchar(10), usedPercent varchar(10), getTime varchar(30))')
    except:
        pass
    finally:
            diskuseinfo = disk.disk_usage().split(' ')
            disksize = diskuseinfo[0]
            diskuse = diskuseinfo[1]
            diskfree = diskuseinfo[2]
            diskused = diskuseinfo[3]

            memuseinfos = map(int,mem.mem_usage().split(' '))
            memtotal = memuseinfos[0]
            memused = memuseinfos[1]
            memfree = memuseinfos[2]
            memusedp = str(round(memused/memtotal,5))+'%'
            memfreep = str(round(memfree/memtotal,5))+'%'

            load = load.load_avg().split(' ')
            load1s = load[0]+'%'
            load5s = load[1]+'%'
            load15s = load[2]+'%'

            cpuinfo = cpu.cpu_usage()
            cpuinfo2 = cpuinfo.split(' ')
            cpuusr = cpuinfo2[0]+'%'
            cpusys = cpuinfo2[1]+'%'
            cpuusage = str(float(cpuinfo2[0]) + float(cpuinfo2[1]))+'%'

            timestr = time.time()
            cur.execute(sqldisk,(disksize,diskuse,diskfree,diskused,timestr))
            cur.execute(sqlmem, (memtotal, memusedp, memfreep, timestr ))
            cur.execute(sqlload, (load1s, load5s, load15s, timestr))
            cur.execute(sqlcpu, (cpuusr, cpusys, cpuusage, timestr))
            if deleteall == True:
                cur.execute('drop table cpuinfo')
                cur.execute('drop table meminfo')
                cur.execute('drop table diskinfo')
                cur.execute('drop table loadinfo')
                print 'All tables have been deleted!'
            else:
                cur.execute('select * from cpuinfo')
                cpus = cur.fetchall()
                print cpus

                cur.execute('select * from meminfo')
                mems = cur.fetchall()
                print mems

                cur.execute('select * from diskinfo')
                disks = cur.fetchall()
                print disks

                cur.execute('select * from loadinfo')
                loads = cur.fetchall()
                print loads

            conn.commit()

    cur.close()
    conn.close()
    print 'Database closed!'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值