#!/usr/bin/env python3
#create at 2018-11-30
'this is a system monitor scripts'
__author__="yjt"import os
import time
import sys
import datetime
import socket  #用于获取主机名
import psutil  #用于获取CPU等信息(该模块属于第三方模块,需要安装;或者安装anaconda3,anaconda3默认已经安装好改模块)
import re#以下是变量值,自己定义
CPUT = 2      #计算CPU利用率的时间间隔
NETT = 2      #计算网卡流量的时间间隔
LOOPT = 2     #脚本循环时间间隔#获取系统基本信息
def baseinfo():hostname = socket.gethostname()start_time = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")now_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
#    sys_runtime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time() - psutil.boot_time()))sys_runtime = os.popen('w').readline().split('users')[0].split('up')[1].strip()[:-1].strip()[:-1]print("\033[31mbase_info:\033[0m")print("hostname:    %-10s"%(hostname))print("start_time:  %-15s"%(start_time))print("now_time:    %-15s"%(now_time))print("sys_runtime: %-10s"%(sys_runtime))
def userconninfo():print("\033[31muser_conn_info:\033[0m")user_conn = len(psutil.users())print("user_conn_num:%s"%(user_conn))print("conn_user%-10s conn_terminal%-10s remmote_ip%-10s start_time%-15s pid%-15s"%('','','','',''))for info in range(user_conn):user = psutil.users()[info].nameterminal = psutil.users()[info].terminalhost = psutil.users()[info].hoststart_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(psutil.users()[0].started))pid = psutil.users()[info].pid#print("conn_user:%-10s conn_terminal:%-10s from_host:%-15s start_time:%-20s pid:%-10d"%(user,terminal,host,start_time,pid))print("%-19s %-23s %-20s %-25s %-15d"%(user,terminal,host,start_time,pid))
#获取CPU信息
def cpuinfo():ave_load = os.popen('uptime').readline().split(":")[-1].split()ave_load = ' '.join(ave_load) #CPU平均负载#以下四项值都是获取的瞬时值user_use = psutil.cpu_times().user  #用户态使用CPU时间sys_use = psutil.cpu_times().system #系统态使用CPU时间idle = psutil.cpu_times().idle #CPU空闲时间iowait = psutil.cpu_times().iowait #IO等待时间total_cpu = 0for i in range(len(psutil.cpu_times())):total_cpu += psutil.cpu_times()[i]  cpu_pre = psutil.cpu_percent(CPUT)logical_cpu = psutil.cpu_count()pyhsical_cpu = psutil.cpu_count(logical=False)print("\033[31mcpu_info:\033[0m")print("cpu_ave_load:    %-20s" %ave_load)print("cpu_user_use:    %-.2f%%" %(user_use / total_cpu * 100))print("cpu_sys_use:     %-.2f%%" %(sys_use  / total_cpu * 100))print("cpu_idle:        %-.2f%%" %(idle / total_cpu * 100 ))print("cpu_iowait:      %-.2f%%" %(iowait / total_cpu * 100 ))print("cpu_ave_use:     %-.2f%%" %cpu_pre)print("logica_cpu:      %-4d"%logical_cpu) #获取逻辑CPU个数print("pyhsical_cpu:    %-4d"%pyhsical_cpu)#获取物理CPU个数
#获取内存信息
def meminfo():total_mem = psutil.virtual_memory().totaluse_mem = psutil.virtual_memory().usedmem_percent = psutil.virtual_memory().percentfree_mem = psutil.virtual_memory().freeswap_mem = psutil.swap_memory().totalswap_use = psutil.swap_memory().usedswap_free = psutil.swap_memory().freeswap_percent = psutil.swap_memory().percentprint("\033[31mmem_info:\033[0m")print("total_mem:     %d M"%(total_mem / 1024 /1024))print("use_mem:       %d M"%(use_mem / 1024 /1024))print("free_mem:      %d M"%(free_mem / 1024 /1024))print("mem_percent:   %s%%"%(mem_percent))print("swap_mem:      %d M"%(swap_mem / 1024 /1024))print("swap_use:      %d M"%(swap_use / 1024 /1024))print("swap_free:     %d M"%(swap_free / 1024 /1024))print("swap_percent:  %s%%"%(swap_percent))
#获取磁盘信息
def diskinfo():print("\033[31mdisk_info:\033[0m")print("disk%-10s total%-10s free%-10s used%-10s percent%-10s"%('','(G)','(G)','(G)','(%)'))disk_len = len(psutil.disk_partitions())for info in range(disk_len):disk = psutil.disk_partitions()[info][1]if len(disk) < 10:total = str(round(psutil.disk_usage(disk).total /1024/1024/1024)) + 'G'free = str(round(psutil.disk_usage(disk).free /1024/1024/1024)) + 'G'used = str(round(psutil.disk_usage(disk).used /1024/1024/1024)) + 'G'percent = str(psutil.disk_usage(disk).percent) + '%'print('%-15s'%(disk),end='')#print(' %-10s  total: %-10s  free: %-10s  used:%-10s  percent:%-s'%('',total,free,used,percent))print('%-13s   %-13s  %-13s  %-s'%(total,free,used,percent))
#获取网卡信息
def netinfo():print('\033[31mnet_info\033[0m')net_item = list(psutil.net_if_addrs())for net in net_item:if re.search(r'bond.*|em.*|eno.*|^eth.*',net):network_card = netip = psutil.net_if_addrs()[net][0].addressrecv_1,recv_2,send_1,send_2=0,0,0,0with open ('/proc/net/dev','r') as f:net_info = f.readlines()net_list = str(net_info).lower().split()if net_list[0] == net:recv_1 = float(net_list[1])send_1 = float(net_list[9])time.sleep(NETT)with open ('/proc/net/dev','r') as f:net_info = f.readlines()net_list = str(net_info).lower().split()if net_list[0] == net:recv_2 = float(net_list[1])send_2 = float(net_list[9])print("network_card%-10s  ip%-20s received%-10s  transmit%-10s "%('','','(kb/s)','(kb/s)'))#print("network_card: %-10s  ip: %-20s received: %-.3f Kb/s transmit: %-.3f kb/s" % (network_card,ip,(recv_2/1024 - recv_1/1024),(send_2/1024 - send_1/1024)))print("%-21s   %-22s %-.3f%13s  %-.3f " % (network_card,ip,(recv_2/1024 - recv_1/1024),'',(send_2/1024 - send_1/1024)))
#获取TCP连接数
def tcpinfo():print('\033[31mtcp_info\033[0m')status_list = ["LISTEN","ESTABLISHED","TIME_WAIT","CLOSE_WAIT","LAST_ACK","SYN_SENT"]status_init = []net_conn =  psutil.net_connections()for key in net_conn:status_init.append(key.status)for value in status_list:print(value,status_init.count(value))if __name__ == '__main__':while True:try:os.system('clear')baseinfo()print("********************************************************")userconninfo()print("########################################################")cpuinfo()print("========================================================")meminfo()print("########################################################")diskinfo()print("********************************************************")netinfo()print("++++++++++++++++++++++++++++++++++++++++++++++++++++++++")tcpinfo()time.sleep(LOOPT)except KeyboardInterrupt as e:print ('')print("Bye-Bye")sys.exit(0)

或者:

#!/usr/bin/env python3
#create at 2018-11-29
'this is a system monitor scripts'
__author__="yjt"import os
import time
import sys
import datetime
import socket  #用于获取主机名
import psutil  #用于获取CPU信息
def sysinfo():hostname = socket.gethostname()sys_runtime = os.popen('w').readline().split('users')[0].split('up')[1].strip()[:-1].strip()[:-1]start_time = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S")now_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))user_conn = os.popen('w').readline().split('users')[0].split('up')[1].strip()[-1]print("\033[31msysinfo:\033[0m")print("Hostname:      {0}".format(hostname))print("Sys_runtime:   {0}".format(sys_runtime))print("start_Time:    {0}".format(start_time))print("now_Time:      {0}".format(now_time))print("User_Conn:     {0}".format(user_conn))
def cpuinfo():""" get cpuinfo from '/proc/stat' """with open('/proc/stat','r') as f:#f = open('/proc/stat','r')cpu = f.readline()#f.close()cpu = cpu.split(' ')total_1 = 0for info in cpu:if info.isdigit():total_1 += float(info)cpu_1 = float(cpu[5]) #空闲态占用CPU时间#以下三种状态计算瞬时值cpu_2 = float(cpu[2]) #用户态占用CPU时间cpu_3 = float(cpu[4]) #系统态占用CPU时间cpu_4 = float(cpu[6]) #IO等待时间time.sleep(2)total_2 = 0with open('/proc/stat','r') as f:cpu = f.readline()cpu = cpu.split(' ')total_2 = 0for info in cpu:if info.isdigit():total_2 += float(info)cpu_5 = float(cpu[5])cpu_idle = cpu_5 - cpu_1total_time = total_2 - total_1cpu_use = 1 - cpu_idle / total_timeave_load = os.popen('uptime').readline().split(":")[-1].split() ave_load = ' '.join(ave_load) #CPU平均负载logical_cpu = psutil.cpu_count()pyhsical_cpu = psutil.cpu_count(logical=False)print("\033[31mcpuinfo: \033[0m")print("cpu_ave_load:    %s" %ave_load)print("cpu_user_use:    %.2f%%" %(cpu_2/total_1 * 100))print("cpu_sys_use:     %.2f%%" %(cpu_3/total_1 * 100))print("cpu_io_wait:     %.2f%%" %(cpu_4/total_1 * 100))print("cpu_ave_use:     %.2f%%" %cpu_use)print("logica_cpu:      %d"%logical_cpu) #获取逻辑CPU个数print("pyhsical_cpu:    %d"%pyhsical_cpu)#获取物理CPU个数def meminfo():with open('/proc/meminfo','r') as f:mem = f.readlines()total,free,buffers,cached,swap_total,swap_free = 0,0,0,0,0,0for info in mem:mem_item = info.lower().split()if mem_item[0] == 'memtotal:':total = float(mem_item[1])if mem_item[0] == 'memfree:':free = float(mem_item[1])if mem_item[0] == 'buffers:':buffers = float(mem_item[1])if mem_item[0] == 'cached:':cached = float(mem_item[1])if mem_item[0] == 'swaptotal:':swap_total = float(mem_item[1])if mem_item[0] == 'swapfree:':swap_free = float(mem_item[1])user_use = total - buffers - cacheduser_use_swap = swap_total - swap_freeuser_usemem_rate = user_use / total * 100user_useswap_rate = user_use_swap / swap_total * 100print("\033[31mmeminfo:\033[0m")print("total_mem:          %d M"%(total / 1024))print("free_mem:           %d M"%(free / 1024))print("user_use_rate:      %.2f%%"%user_usemem_rate)print("swap_total:         %d M"%(swap_total / 1024))print("swap_free:          %d M"%(swap_free / 1024))print("user_useswap_rate:  %.2f%%"%user_useswap_rate)def diskinfo():
#    passdisk = os.popen('df -h').readlines()for info in disk:disk_item = info.split()if disk_item[-1] == '/':disk_root = disk_item[-1]disk_root_total = disk_item[1]disk_root_use = disk_item[2]disk_root_rate = disk_item[4]if disk_item[-1] == '/home':disk_home = disk_item[-1]disk_home_total = disk_item[1]disk_home_use = disk_item[2]disk_home_rate = disk_item[4]if disk_item[-1] == '/boot':disk_boot = disk_item[-1]disk_boot_total = disk_item[1]disk_boot_use = disk_item[2]disk_boot_rate = disk_item[4]if disk_item[-1] == '/data':disk_data = disk_item[-1]disk_data_total = disk_item[1]disk_data_use = disk_item[2]disk_data_rate = disk_item[4]#disk_io = psutil.disk_io_counters(perdisk=True)print("\033[31mdiskinfo:\033[0m")print("root: %-10s    root_total: %-5s    root_use: %-5s    root_use_pre: %-5s"%(disk_root,disk_root_total,disk_root_use,disk_root_rate))print("home: %-10s    home_total: %-5s    home_use: %-5s    home_use_pre: %-5s"%(disk_home,disk_home_total,disk_home_use,disk_home_rate))print("boot: %-10s    boot_total: %-5s    boot_use: %-5s    boot_use_pre: %-5s"%(disk_boot,disk_boot_total,disk_boot_use,disk_boot_rate))print("data: %-10s    data_total: %-5s    data_use: %-5s    data_use_pre: %-5s"%(disk_data,disk_data_total,disk_data_use,disk_data_rate))
def netinfo():passif __name__ == '__main__':while True:try:os.system('clear')sysinfo()print("********************************************************")cpuinfo()print("========================================================")meminfo()print("########################################################")diskinfo()time.sleep(5)except KeyboardInterrupt as e:print ('')print("Bye-Bye")sys.exit(0)

  

转载于:https://www.cnblogs.com/yjt1993/p/10045858.html

python3 系统监控脚本(CPU,memory,网络,disk等)相关推荐

  1. 利用Python实现系统监控脚本

    利用Python实现系统监控脚本 简介 该 Python 脚本,用于监控计算机或网络的性能和状态.该脚本可用于跟踪各种指标,例如 CPU 使用率.内存使用率.磁盘空间.网络流量和系统正常运行时间.该脚 ...

  2. 无法读取源文件或磁盘_系统监控之磁盘和网络监控工具

    一:硬盘基础知识: 1.1:硬盘IOPS理论: IOPS (Input/Output Per Second) 是衡量磁盘性能的重要指标,IOPS指的是每秒磁盘可以处理的请求数据和返回数据的次数,一次请 ...

  3. linux系统中的基础监控(硬盘,内存,系统负载,CPU,网络等)

    Linux系统常见日常监控 系统信息 查看 CentOS 版本号:cat /etc/redhat-release 综合监控 nmon 系统负载 命令:w(判断整体瓶颈) 12:04:52 up 16 ...

  4. linux 系统监控脚本

    Linux下性能预警及应急处理 自己编写一个脚本程序,该程序在工作时段(8:00-22:00),每隔一个小时执行一次:在其他时段每隔两小时执行一次. 每次执行都要完成如下任务: 1.检测进程CPU占用 ...

  5. linux 监控进程撤销,linux 系统监控脚本

    Linux下性能预警及应急处理 自己编写一个脚本程序,该程序在工作时段(8:00-22:00),每隔一个小时执行一次:在其他时段每隔两小时执行一次. 每次执行都要完成如下任务: 1.检测进程CPU占用 ...

  6. linux io读写次数 oid,Linux系统监控的CPU、Mem、IO的OID

    一.负载OID OID:1.3.6.1.4.1.2021 名称                OID 1 minute Load:         10.1.3.1 5 minute Load:    ...

  7. 老李分享:shell 监控cpu,memory,load average 1

    老李分享:shell 监控cpu,memory,load average poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课 ...

  8. linux 服务器硬件报警,Linux服务器硬件运行状态及故障邮件提醒的监控脚本分享...

    监控硬件运行状况 shell 监控cpu,memory,load average,记录到log,当负载压力时,发电邮通知管理员. 原理: 1.获取cpu,memory,load average的数值 ...

  9. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1, #cat /proc/stat/  信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2, #vmstat –s   或者 #vmstat    虚拟内存统 ...

最新文章

  1. Windows 7 的系统优化方案
  2. 竞拍AI教父Hinton
  3. python 文本模式读写文件时 不应使用 os.linesep 简介
  4. Python列表变字典
  5. Python数据分析学习笔记之Pandas入门
  6. 1026 程序运行时间 (15 分)(c语言)
  7. 【译】索引进阶(十一):SQL SERVER中的索引碎片【上篇】
  8. 在struts2中push方法的使用_【干货】网版印刷中水墨使用注意事项及助剂使用方法...
  9. 如何用百度MIP快速搭建体验友好的移动页面
  10. Copy Clone
  11. thttpd服务器修改时间后导致CPU占用率过高
  12. Vue中使用echarts图表插件
  13. oracle和mysql数据实时同步_Canal 实现 Mysql数据库实时数据同步
  14. mysql存储引擎分类
  15. java 坦克大战设计论文,java坦克大战毕业设计论文
  16. Win10相机打不开提示:我们找不到你的相机 错误代码0xa00f4244!
  17. cpi 计算机体系结构 转移指令,高等计算机体系结构基本概念总结
  18. 【贪心法】黑白连线问题
  19. Spring Cloud Gateway — 网关基本功能API暴露
  20. 不会编程却想做APP ? 让Power Apps 来帮你

热门文章

  1. android中xml文件的生成与读取(Pull)
  2. 北京冬奥一项AI黑科技即将走进大众:实时动捕三维姿态,误差不到5毫米
  3. 只需1秒,无人机就能平地翻跟头 | IEEE
  4. 英伟达“神笔马良”GauGAN发布Windows应用程序,可导出PSD文件
  5. Jupyter Notebook已出现“返祖现象”,这款工具让你在终端里使用它
  6. 明尼苏达大学研究团队道歉,Linux内核维护人员:拒绝
  7. iPhone12要来了,苹果第一款5G手机,哪些值得期待?
  8. 高通5G旗舰升级!骁龙855Plus发布,主打游戏和AI;网友:牙膏厂
  9. 企业级java springboot b2bc商城系统开源源码二次开发-(四)断路器(Hystrix)
  10. 物联网技术周报第 145 期: ESP8266 和 IFTTT 自制 WiFi 智能秤