当前位置:Gxlcms > Python > 统计多台linux的CPU使用率

统计多台linux的CPU使用率

时间:2021-07-01 10:21:17 帮助过:35人阅读

  1. #!/usr/bin/python
  2. # -*- coding:utf8 -*-
  3. # Email:chenwx716@163.com
  4. __author__ = 'chenwx'
  5. import paramiko
  6. import re
  7. from time import sleep
  8. linux_info=(
  9. ['ssoweb12','192.168.5.32'],
  10. ['ssoweb17','192.168.5.37'],
  11. ['ssoweb18','192.168.5.38']
  12. )
  13. def cpu_r(cpu_stat):
  14. sys_cpu_info_t = re.findall(r'cpu .*\d',cpu_stat)
  15. z_str = ' '.join(sys_cpu_info_t)
  16. z_list = list(z_str.split())
  17. z_list.remove("cpu")
  18. f_line_a=[]
  19. for i in z_list:
  20. i=int(i)
  21. f_line_a.append(i)
  22. total = sum(f_line_a)
  23. idle = f_line_a[3]
  24. return total,idle
  25. server_user='root'
  26. server_pw='passw0rd'
  27. server_info={}
  28. for i in linux_info:
  29. server_id=i[0]
  30. server_ip=i[1]
  31. ss = paramiko.SSHClient()
  32. ss.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  33. ss.connect(server_ip,22,server_user,server_pw)
  34. stdin,stdout,stderr=ss.exec_command('cat /proc/stat')
  35. sys_cpu_stat = stdout.read()
  36. total_a,idle_a=cpu_r(sys_cpu_stat)
  37. sleep(3)
  38. stdin,stdout,stderr=ss.exec_command('cat /proc/stat')
  39. sys_cpu_stat = stdout.read()
  40. total_b,idle_b=cpu_r(sys_cpu_stat)
  41. ss.close()
  42. sys_idle = idle_b - idle_a
  43. sys_total = total_b - total_a
  44. sys_us = sys_total - sys_idle
  45. cpu_a = (float(sys_us)/sys_total)*100
  46. cpu_b = str(round(cpu_a,2))+'%'
  47. server_info_list=[server_id,server_ip,cpu_b]
  48. server_info[server_id]=server_info_list
  49. print server_info

人气教程排行