[Win服务器] 巡检WINDOWS服务器CPU,内存和磁盘多个分区的PYTHON脚本

144 0
Honkers 2025-4-26 01:16:56 来自手机 | 显示全部楼层 |阅读模式

接上一次实验的内容,输出相同格式的EXCEL巡检表格

https://blog.csdn.net/lsysafe/article/details/106927633

这次巡检的服务器平台为WINDOWS的机器,从网络调用WMIC接口获取服务器的信息,代码如下:

  1. # -*- coding: utf-8 -*-
  2. import wmi
  3. import sys
  4. reload(sys)
  5. import xlsxwriter
  6. sys.setdefaultencoding('utf-8')
  7. import time
  8. def trywexrestrdiskp(files):
  9. nowtime=time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))+""
  10. filenames=nowtime+'systeminfo.xlsx'
  11. workbook1 = xlsxwriter.Workbook(filenames)
  12. worksheet = workbook1.add_worksheet()
  13. t1='自定义WINDOWS服务器运行情况'
  14. format=workbook1.add_format()
  15. format.set_bold()
  16. yellow=workbook1.add_format({'align':'center','valign':'vcenter','font_size':22,'fg_color':'FFC1C1'})
  17. yellow.set_bold()
  18. worksheet.merge_range('A1:I1',t1,yellow)
  19. worksheet.set_row(0, 38)
  20. worksheet.set_column("A:A",20)
  21. worksheet.set_column("B:B",11)
  22. worksheet.set_column("C:C",12)
  23. worksheet.set_column("D:D",12)
  24. worksheet.set_column("E:E",20)
  25. title=[u'IP地址',u'CPU使用率%',u'内存总量M',u'内存使用率%',u'巡检结果']
  26. format=workbook1.add_format()
  27. format=workbook1.add_format({'align':'center','valign':'vcenter'})
  28. format.set_bold()
  29. worksheet.write_row('A2',title,format)
  30. worksheet.set_row(1, 25)
  31. row=2
  32. try:
  33. myfile=open(files,'r')
  34. for line in myfile:
  35. con=line.split()
  36. h=con[0]
  37. u=con[1]
  38. p=con[2]
  39. try:
  40. conn = wmi.WMI(computer=h,user=u,password=p)
  41. cu=0
  42. cn=0
  43. for cpu in conn.Win32_Processor():
  44. cl=int(cpu.LoadPercentage)
  45. cu=cu+cl
  46. cn=cn+1
  47. cp=("%0.2f%%" %(cu/cn)) #CPU使用率
  48. mcs=conn.Win32_ComputerSystem()
  49. mos=conn.Win32_OperatingSystem()
  50. mpfu=int(mcs[0].TotalPhysicalMemory)/1024/1024 #内存总量M
  51. mfree=int(mos[0].FreePhysicalMemory)/1024
  52. um=mpfu-mfree
  53. mp=("%0.2f%%" %(100*um/mpfu)) #内存使用率
  54. worksheet.write(row,0,h)
  55. worksheet.write(row,1,cp)
  56. worksheet.write(row,2,mpfu)
  57. worksheet.write(row,3,mp)
  58. remark="正常"
  59. try:
  60. # b=round(float(mp))
  61. # print b
  62. if int(100*um/mpfu)>80:
  63. remark="评估是否扩内存" #内存使用率达到80%进行提示
  64. except Exception:
  65. remark="NONE"
  66. worksheet.write(row,4,remark)
  67. n=5
  68. for disk in conn.Win32_LogicalDisk (DriveType=3):
  69. worksheet.set_column(n,n,10)
  70. worksheet.write(row,n,"分区 "+disk.DeviceID)
  71. worksheet.set_column(n+1,n+1,15)
  72. worksheet.write(row,n+1,"分区大小 "+str(int(disk.Size)/1073741824) + "G")
  73. worksheet.set_column(n+2,n+2,20)
  74. try:
  75. du=int(int(disk.Size)-int(disk.FreeSpace))
  76. dp=("%0.2f%%" %(100*du/int(disk.Size)))
  77. if int(100*du/int(disk.Size))>80:
  78. formatmred = workbook1.add_format({'bold': True, 'font_color': 'red'})
  79. worksheet.write(row,n+2,"分区使用率 "+dp,formatmred) #磁盘使用率达到80%用红色字体显示
  80. else:
  81. worksheet.write(row,n+2,"分区使用率 "+dp)
  82. except Exception:
  83. worksheet.write(row,n+2,"分区使用率无法计算")
  84. n=n+3
  85. except Exception:
  86. print h +" error"
  87. worksheet.write(row,0,h)
  88. worksheet.write(row,1,"none")
  89. worksheet.write(row,2,"none")
  90. worksheet.write(row,3,"none")
  91. row=row+1
  92. except Exception:
  93. print "cannot open files"
  94. workbook1.close()
  95. trywexrestrdiskp("windows.txt")
复制代码

同一目录的windows.txt,写上IP用户名密码,也可以写进数据库再加密读取比较安全

 

运行脚本,输出的格式和上一篇博文CENTOS版本的输出格式一样

主要就是能够支持任意多个分区,每个机器只用一行记录

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

特级红客

关注
  • 3156
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行