python psutil 获取的网络io是实时数据还是累积
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python psutil 获取的网络io是实时数据还是累积相关的知识,希望对你有一定的参考价值。
#!/usr/bin/env python#coding:utf-8
import psutil
import time
import sys
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-t", "--time", dest="time",
help="此参数可查看当前下载占的带宽,-t是测试时间", metavar="10")
parser.add_option("-d", "--deamon",action="store_false", dest="deamon", default=True,
help="后台运行此脚本")
def Sysinfo():
Boot_Start = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(psutil.boot_time()))
time.sleep(0.5)
Cpu_usage = psutil.cpu_percent()
RAM = int(psutil.virtual_memory().total/(1027*1024))
RAM_percent = psutil.virtual_memory().percent
Swap = int(psutil.swap_memory().total/(1027*1024))
Swap_percent = psutil.swap_memory().percent
Net_sent = psutil.net_io_counters().bytes_sent
Net_recv = psutil.net_io_counters().bytes_recv
Net_spkg = psutil.net_io_counters().packets_sent
Net_rpkg = psutil.net_io_counters().packets_recv
BFH = r'%'
print " \033[1;32m开机时间:%s\033[1;m" % Boot_Start
print " \033[1;32m当前CPU使用率:%s%s\033[1;m" % (Cpu_usage,BFH)
print " \033[1;32m物理内存:%dM\t使用率:%s%s\033[1;m" % (RAM,RAM_percent,BFH)
print "\033[1;32mSwap内存:%dM\t使用率:%s%s\033[1;m" % (Swap,Swap_percent,BFH)
print " \033[1;32m发送:%d Byte\t发送包数:%d个\033[1;m" % (Net_sent,Net_spkg)
print " \033[1;32m接收:%d Byte\t接收包数:%d个\033[1;m" % (Net_recv,Net_rpkg)
for i in psutil.disk_partitions():
print " \033[1;32m盘符: %s 挂载点: %s 使用率: %s%s\033[1;m" % (i[0],i[1],psutil.disk_usage(i[1])[3],BFH)
def Net_io(s):
x = 0
sum = 0
while True:
if x >= s:
break
r1 = psutil.net_io_counters().bytes_recv
time.sleep(1)
r2 = psutil.net_io_counters().bytes_recv
y = r2 - r1
print "%.2f Kb/s" % (y / 1024.0)
sum += y
x += 1
result = sum / x
print "\033[1;32m%s秒内平均速度:%.2f Kb/s \033[1;m" % (x,result / 1024.0)
if __name__ == "__main__":
(options, args) = parser.parse_args()
if options.time:
Net_io(int(options.time))
else:
Sysinfo() 参考技术A 应该是累积的
我试了,计算的是从网络成功连接开始发送或接收的字节/数据包
我本来也想问这个
初识Python自动化运维
系统模块
系统模块主要是使用psutil库,后面会主要写这个介绍一下
psutil 是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(包括cpu 磁盘 网络等信息)
常用psutil监控指标
import psutil
print(psutil.cpu_count(logical=False)) # 返回cpu核心数 参数默认true 如果是false仅返回物理核心数
print(psutil.virtual_memory()) # 返回内存信息 元组(全部,已用,百分比,使用过,未使用过,)
li=psutil.virtual_memory().total # 拿到内存 拿到的是比特
print(int(li)/1024/1024/1024) # 转换成gb
print(psutil.disk_partitions()) # 查看磁盘信息
print(psutil.disk_usage("D:\\\\").percent) #查看磁盘利用情况 当然后面也可以带一些其他参数,需要什么就带什么,具体可以看文档
print(psutil.disk_usage("F:\\\\"))
运行效果
使用psutil查看系统进程
import psutil
print(psutil.pids()) # 返回运行程序清单 list 里面是pid
print(psutil.Process(896)) #传入pid 可以拿到这个id对应的程序情况,并且返回一些信息 当然返回也是list
print(psutil.Process(896).exe()) # 返回程序所在位置
print(psutil.Process(896).connections()) # 返回程序连接信息 本地ip 远程ip 端口 状态等,可以使用它进行监控程序运行信息
运行效果
演示用popen获取用户进程信息
import psutil
p=psutil.Popen(["D:\\python\\python\\python.exe","-c","print('hello')"],stdout=PIPE) # 运行一个程序
print(p.name()) # 返回程序由什么程序运行
print(p.username()) # 返回运行在那个用户下
print(p.cpu_times) #返回 占用cup的信息
运行效果
IP地址处理模块
主要是使用IPy这个包 ,使用这个库,可以处理绝大部分IPV6和IPV4的网络和地址
Dns模块
主要是使用dns工具包,可以查询动态更新ZONEx信息,所谓dns服务就是将域名转换为ip地址,
- A记录 :将主机名转换成IP地址
- MX记录 :邮件交换记录,定义邮件服务器的域名,
- CNAME记录 ,指别名记录,实现域名间的映射
- NS记录 标记区域的域名服务器及授权子域;
- PTR记录 反向解析,与A记录相反,将IP转换成主机名
- SOAj记录,SOA标记,一个起始授权区的定义
常见解析类型示例说明
常见的DNS解析类型包括 A、MX、NS、CNAME等利用dnspython的dnsresoler.
query方法可以简单实现这些DNS类型的查询,为后面要实现的功能提供数据来源。例如一个使用DNS轮询业务的域名进行可用性监控,需要得到当前的解析结果。
邮件发送模块
- 简单邮件发送
import smtplib
HOST="smtp.qq.com"
SUBJECT="CES"
FROM="1174115923@qq.com"
TO="1298391806@qq.com"
text="摘星"
BODY="\\n".join(
("来自:%s"%FROM,"目的地:%s"%TO,"项目:%s"%SUBJECT,"text: %s"%text)
).encode(encoding="utf-8") # 解决编码问题
server=smtplib.SMTP(HOST)
server.login("1174115923@qq.com","iyjohyjovxrsjbfa")
server.sendmail(FROM,[TO],BODY)
server.quit()```
以上是关于python psutil 获取的网络io是实时数据还是累积的主要内容,如果未能解决你的问题,请参考以下文章