学习啦 > 学习电脑 > 电脑安全 > 局域网安全 > 局域网python封装linux监控模块

局域网python封装linux监控模块

时间: 林泽1002 分享

局域网python封装linux监控模块

  psutil是一个跨平台库,能够轻松实现获取系统运行的进程、系统利用率、CPU信息、内存信息、磁盘信息、网络信息。下面是学习啦小编收集整理的局域网python封装linux监控模块,希望对大家有帮助~~

  局域网python封装linux监控模块

  一、简介

  psutil是一个跨平台库,能够轻松实现获取系统运行的进程、系统利用率、CPU信息、内存信息、磁盘信息、网络信息。它主要应用于系统监控,分析和限制系统资源及进程管理。以下是小编实现的网页版效果。

  二、安装步骤

  1.开发环境:centos 7

  2.开发语言:python 2.7.5

  3.依赖软件

  (1).安装setuptools

  下载地址:https://pypi.python.org/pypi/setuptools

  #wget https://pypi.python.org/packages/xxx/setuptools-xxx.tar.gz

  #tar xf setuptools-xxx.tar.gz

  #cd setuptools-xxx

  #python setup.py install

  (2).安装pip

  下载地址:https://pypi.python.org/pypi/pip

  #wget https://pypi.python.org/packages/xxx/pip-xxx.tar.gz

  #tar xf pip-xxx.tar.gz

  #cd pip-xxx

  #python setup.py install

  (3).安装psutil

  #pip install psutil

  4.封装CPU信息

  info = psutil.cpu_times()

  res = dict(

  user=info.user, # 执行用户进程的时间百分比

  system=info.system, # 执行内核进程和中断的时间百分比

  iowait=info.iowait, # 由于IO等待而使CPU处于idle(空闲)状态的时间百分比

  idle=info.idle, # CPU处于idle状态的时间百分比

  cpucount1=psutil.cpu_count(), # 获取CPU的逻辑个数

  cpucount2=psutil.cpu_count(logical=False) # 获取CPU的物理个数

  )

  5.封装内存信息

  meminfo = psutil.virtual_memory()

  swapinfo = psutil.swap_memory()

  res = dict(

  mem=dict(

  total=round(meminfo.total / (1024 ** 3), 2), # 内存总数

  available=round(meminfo.available / (1024 ** 3), 2), # 可用内存数

  percent=meminfo.percent,

  used=round(meminfo.used / (1024 ** 3), 2), # 已使用的内存数

  free=round(meminfo.free / (1024 ** 3), 2), # 空闲内存数

  active=round(meminfo.active / (1024 ** 3), 2), # 活跃内存数

  inactive=round(meminfo.inactive / (1024 ** 3), 2), # 不活跃内存数

  buffers=round(meminfo.buffers / (1024 ** 3), 2), # 缓冲使用数

  cached=round(meminfo.cached / (1024 ** 3), 2), # 缓存使用数

  shared=round(meminfo.shared / (1024 ** 3), 2) # 共享内存数

  ),

  swap=dict(

  total=round(swapinfo.total / (1024 ** 3), 2), # 交换分区总数

  used=round(swapinfo.used / (1024 ** 3), 2), # 已使用的交换分区数

  free=round(swapinfo.free / (1024 ** 3), 2), # 空闲交换分区数

  percent=swapinfo.percent,

  sin=round(swapinfo.sin / (1024 ** 3), 2), # 输入数

  sout=round(swapinfo.sout / (1024 ** 3), 2) # 输出数

  )

  )

  6.封装磁盘信息

  partinfo = psutil.disk_usage("/") #获取磁盘完整信息

  diskinfo = dict(

  free=round(partinfo.free / (1024 ** 3), 2), #磁盘剩余量

  used=round(partinfo.used / (1024 ** 3), 2),#磁盘使用量

  total=round(partinfo.total / (1024 ** 3), 2),#磁盘总量

  )

  7.封装网络信息

  allnetio = psutil.net_io_counters() # 获取网络总的IO信息

  onenetio = psutil.net_io_counters(pernic=True) # 输出每个网络接口的IO信息

  res = dict(

  allnetio=dict(

  bytes_sent=allnetio.bytes_sent, # 发送字节数

  bytes_recv=allnetio.bytes_recv, # 接受字节数

  packets_sent=allnetio.packets_sent, # 发送数据包数

  packets_recv=allnetio.packets_recv, # 接受数据包数

  errin=allnetio.errin,

  errout=allnetio.errout,

  dropin=allnetio.dropin,

  dropout=allnetio.dropout

  ),

  onenetio=[

  dict(

  name=v[0],

  bytes_sent=v[1].bytes_sent, # 发送字节数

  bytes_recv=v[1].bytes_recv, # 接受字节数

  packets_sent=v[1].packets_sent, # 发送数据包数

  packets_recv=v[1].packets_recv, # 接受数据包数

  errin=v[1].errin,

  errout=v[1].errout,

  dropin=v[1].dropin,

  dropout=v[1].dropout

  )

  for v in onenetio.iteritems()

  ]

  )

  8.用户信息

  usersinfo = psutil.users() # 当前登录系统的用户信息

  res = dict(

  usersinfo=[

  dict(

  name=v.name, # 当前登录用户名

  terminal=v.terminal, # 打开终端

  host=v.host, # 登录IP地址

  started=datetime.datetime.fromtimestamp(v.started).strftime("%Y-%m-%d %H:%M:%S") # 登录时间

  )

  for v in usersinfo

  ],

  boottime=datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S") # 开机时间

  )

  9.进程信息

  pidsinfo = psutil.pids() # 列出所有进程pid

  pinfo = map(lambda v: psutil.Process(v), pidsinfo) # 实例化进程状态

  res = dict(

  pinfo=[

  dict(

  pid=v[0], # 进程pid

  name=v[1].name(), # 进程名称

  exe=v[1].exe(), # 进程bin路径

  cwd=v[1].cwd(), # 进程工作目录绝对路径

  status=v[1].status(), # 进程状态

  create_time=datetime.datetime.fromtimestamp(v[1].create_time()).strftime("%Y-%m-%d %H:%M:%S"),

  # 进程创建时间

  uids=dict(

  real=v[1].uids().real,

  effective=v[1].uids().effective,

  saved=v[1].uids().saved,

  ), # 进程uid信息

  gids=dict(

  real=v[1].gids().real,

  effective=v[1].gids().effective,

  saved=v[1].gids().saved,

  ), # 进程gid信息

  cpu_times=dict(

  user=v[1].cpu_times().user, # 用户cpu时间

  system=v[1].cpu_times().system, # 系统cpu时间

  ), # 进程cpu时间

  cpu_affinity=v[1].cpu_affinity(), # 进程cpu亲和度

  memory_percent=round(v[1].memory_percent(), 2), # 进程内存利用率

  memory_info=dict(

  rss=v[1].memory_info().rss, # 进程内存rss信息

  vms=v[1].memory_info().vms # 进程内存vms信息

  ), # 进程内存信息

  io_counters=dict(

  read_count=v[1].io_counters().read_count, # 读IO数

  write_count=v[1].io_counters().write_count, # 写IO数

  read_bytes=v[1].io_counters().read_bytes, # IO读字节数

  write_bytes=v[1].io_counters().write_bytes, # IO写字节数

  ), # 进程IO信息

  num_threads=v[1].num_threads(), # 进程开启的线程数

  # connections = v[1].connections()#打开进程socket的namedutples列表

  )

  for v in zip(pidsinfo, pinfo)

  ]

  )

  res["pinfo"] = sorted(res["pinfo"], key=lambda v: v["memory_percent"], reverse=True)


局域网python相关文章:

1.局域网python快速上手

2.怎么搭建局域网YUM服务器

3.局域网怎么搭建YUM服务器

4.网络管理员无工作经验简历怎么写

5.远程操作Mysql数据库

2900375