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+ '\nIP地址:' + ip_addr + '\n用户名:' + username)
print('====================')
print('\n=====资源使用率=====')
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    运行结果

Python日常运维脚本的更多相关文章

  1. 转:python常用运维脚本实例

    python常用运维脚本实例 转载  file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函 ...

  2. python常用运维脚本实例【转】

    file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函数open()来打开一个文件 . 首先 ...

  3. python常用运维脚本实例

    转载  file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函数open()来打开一个文件 ...

  4. Python自动化运维工具fabric的安装

    使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...

  5. Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)

    之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...

  6. Python自动化运维工具-Fabric部署及使用总结

    使用shell命令进行复杂的运维时,代码往往变得复杂难懂,而使用python脚本语言来编写运维程序,就相当于开发普通的应用一样,所以维护和扩展都比较简单,更重要的是python运维工具fabric能自 ...

  7. linux日常运维工作

    Linux的使用环境也日趋成熟,各种开源产品络绎不绝,大有百花齐放的盛景,那么当Linux落地企业,回归工作时,我们还要面对这Linux运维方面的诸多问题,今天我们特意组织一场有关Linux 在企业运 ...

  8. hadoop日常运维与升级总结

    日常运维 升级 问题处理方法 日常运维 进程管理 由于配置文件的更改,需要重启生效, 或者是进程自己因某种致命原因终止, 或者发现进程工作出现异常等情况下,需要进行手动进程的关闭或启动, 或者是增删节 ...

  9. zookeeper 用法和日常运维

    本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...

随机推荐

  1. mockito 初识

    转载:http://blog.csdn.net/zhoudaxia/article/details/33056093 在平时的开发工作中,经常会碰到开发进度不一致,导致你要调用的接口还没好,此时又需要 ...

  2. pdf转为html查看pdf.js

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. ARM-IoT

    http://tech.hqew.com/fangan_723798 物联网就是一个物品互联网,这里的物品(物)内部有电子系统,具有感知和上报功能,支持远程控制,有时还能做出简单的决策.与物联网相关的 ...

  4. Infor SyteLine创建一个数据维护窗口

    上次有在SyteLine解决一个问题<匹配与显示中文说明> http://www.cnblogs.com/insus/p/3396541.html .这些数据需要数据库管理员在数据库才能维 ...

  5. wxpython 界面布局

    1.frame.Centre() 窗口出来后显示居中 2.textCtrl文本框style=wx.TE_PASSWORD密码, wx.TE_MULTILINE多行输入 3.单选按钮组 4.列表 5.图 ...

  6. Azure镜像市场再下一城,中标软件入驻开启Azure国产操作系统时代

    近日,中标软件成功入驻 Azure 镜像市场,提供中标麒麟 Linux 的产品镜像服务,这样一来,中标麒麟也成为国内唯一能够在 Azure 公有云上运行的国产操作系统产品. 作为国内操作系统的领头羊, ...

  7. 调试一个Ext打开的window窗口内嵌Iframe的form提交问题

    一个奇怪的问题是:潜逃在iframe里的页面单独提交都是正常,放到iframe里面通过js调用在parent页面.提交总是被莫名其妙的杀掉. 确定js简单无错之后,继续看parent的处理逻辑,有这么 ...

  8. ORA-01795: 列表中的最大表达式数为1000的解决方法

    IN中的数据量不能超过1000条. 解决方案:把条件分成多个少于1000的IN即: DELETEFROMT_MM_SECTION_SITE_UPDATEWHERE T.T_MM_SECTION_SL_ ...

  9. MySQL学习(三)函数

    一.数学函数 绝对值函数ABS():ABS(X) 返回圆周率函数PI() 平方根函数SQRT() 求余函数MOD(X,Y) 获取整数函数CEIL(X),CEILING(X)返回不小于X的最小整数:FL ...

  10. Locust性能测试1 脚本编写与运行

    按照官网的quickstart编写脚本并运行 1  编写脚本 2  locust -f  filepath 启动locust 3 浏览器打开localhost:8089,设置并发用户数和每秒启动用户数 ...