zoukankan      html  css  js  c++  java
  • Python日常运维脚本

    1    扫描Windows系统CPU、内存、磁盘利用率

    1.1    实现代码

    #!usr/bin/env python
    #-*- coding:utf-8 _*-
    
    """
    @author:T-guoh
    @file: server_monitor.py
    @time: 2019/03/18
    """
    
    import psutil
    import os
    import socket
    
    cpu = {'user':0,'system':0,'idle':0,'percent':0}
    mem = {'total' : 0, 'avaiable' : 0, 'percent' : 0, 'used' : 0, 'free' : 0}
    disk_id = []
    disk_total = []
    disk_used = []
    disk_free = []
    disk_percent = []
    
    #获取CPU信息
    def get_cpu_info():
        cpu_times = psutil.cpu_times()
        cpu['user'] = cpu_times.user
        cpu['system'] = cpu_times.system
        cpu['idle'] = cpu_times.idle
        cpu['percent'] = psutil.cpu_percent(interval=2)
    
    #获取Memory信息
    def get_mem_info():
        mem_info = psutil.virtual_memory()
        mem['total'] = mem_info.total
        mem['avaiable'] = mem_info.available
        mem['percent'] = mem_info.percent
        mem['used'] = mem_info.percent
        mem['free'] = mem_info.free
    #获取Disk信息
    def get_disk_info():
        for id in psutil.disk_partitions():
            if 'cdrom' in id.opts or id.fstype == '':
                continue
            disk_name = id.device.split(':')
            s = disk_name[0]
            disk_id.append(s)
            disk_info = psutil.disk_usage(id.device)
            disk_total.append(disk_info.total)
            disk_used.append(disk_info.used)
            disk_percent.append(disk_info.percent)
            disk_free.append(disk_info.free)
    #定义主函数
    def main():
        get_cpu_info()
        cpu_status = cpu['percent']
        get_mem_info()
        mem_status = mem['percent']
        hostname = os.environ['COMPUTERNAME']
        username = os.environ['USERNAME']
        ip_addr = socket.gethostbyname(hostname)
        print('======基本信息======')
        print('主机名:'+ hostname+ '
    IP地址:' + ip_addr + '
    用户名:' + username)
        print('====================')
        print('
    =====资源使用率=====')
        print('CPU使用率:%s %%' % cpu_status)
        print('Mem使用率:%s %%' % mem_status)
        get_disk_info()
        for i in range(len(disk_id)):
            print('%s盘空闲率:%s %%' % (disk_id[i], round(100 - disk_percent[i], 2)))
        print('====================')
        os.system('pause')
    
    if __name__ == '__main__':
        main()

    1.2    运行结果

    2    扫描Windows系统Top目录与文件大小

    2.1    实现代码

    #!usr/bin/env python
    #-*- coding:utf-8 _*-
    
    """
    @author:T-guoh
    @file: server_monitor.py
    @time: 2019/03/18
    """
    
    import os
    
    #统计指定目录下各个文件夹的大小,方便观察具体目录的大小
    def CountDirSize(srcDir):
        dirSizeDict = {}
        fileSizeDict = {}
        for fileList in os.listdir(srcDir):
            filePath = os.path.join(srcDir,fileList)
            if os.path.isdir(filePath):
                size = 0
                for roots,dirs,files in os.walk(filePath):
                    for fileName in files:
                        fileNamePath = os.path.join(roots,fileName)
                        sizetemp = 0
                        try:
                            sizetemp = os.path.getsize(fileNamePath)
                            if sizetemp > 1024*1024:
                                fileSizeDict[fileNamePath] = sizetemp
                        except:
                            sizetemp = 0
                        size += sizetemp
                dirSizeDict[fileList] = size
        #按照从大到小的顺序降序排列
        dirSizeDict = sorted(dirSizeDict.items(),key = lambda dirSizeDict:dirSizeDict[1],reverse = True)
        Sum = 0
        #各个目录占用空间
        print("Each directory takes up space:")
        for ele in dirSizeDict:
            temp = ele[1]/1024/1024
            Sum += temp
            #以单位为M,输出大小
            print(ele[0] + ":" + str(temp) + " M")
        #以单位为G,输出大小
        print("Total use:" + str(Sum / 1024) +" G")
        print("")
        #前20个大文件占用空间
        print("Top 20 large file takes up space:")
        fileSizeDict = sorted(fileSizeDict.items(),key = lambda fileSizeDict:fileSizeDict[1],reverse = True)
        for ele in fileSizeDict[:20]:
            print(ele[0] + ":" +str(ele[1]/1024/1024) + " M")
    
    if __name__ == "__main__":
        srcDir = "c:\"
        CountDirSize(srcDir)

    2.2    运行结果

  • 相关阅读:
    将浏览器变成文本编辑器
    《奋斗吧!菜鸟》 第七次作业:团队项目设计完善&编码
    java第二周作业
    java第一周作业
    java第三周作业
    java暑期作业
    java第四周学习总结
    正则表达式常用的js验证
    学习网址
    jquery 操作下拉框
  • 原文地址:https://www.cnblogs.com/Wolf-Dreams/p/10693429.html
Copyright © 2011-2022 走看看