系统性能信息模块-psutil
psutil是一个跨平台库,能够实现获取系统运行的进程和系统利用率信息。主要应用于监控系统,分析和限制系统资源及进程的管理。
获取系统性能信息
CPU信息
import psutil
#获取cpu完整信息,需要显示所有逻辑CPU信息指定参数percpu=True即可
print(psutil.cpu_times())
#获取单项数据信息,如用户的CPU时间比
print(psutil.cpu_times().user)
#获取CPU逻辑个数
print(psutil.cpu_count())
#获取CPU的物理个数
print(psutil.cpu_count())
内存信息
import psutil
#获取内存完整信息
print(psutil.virtual_memory())
#获取内存总容量
print(psutil.virtual_memory().total)
#获取空闲内存容量
print(psutil.virtual_memory().free)
#获取swap内存信息
print(psutil.swap_memory())
磁盘信息
import psutil
#获取磁盘完整信息
print(psutil.disk_partitions())
#获取/分区的使用情况
print(psutil.disk_usage('/'))
#获取硬盘总IO信息
print(psutil.disk_io_counters())
#获取单个分区IO信息
print(psutil.disk_io_counters(perdisk=True))
网络信息
import psutil
#获取网络总IO信息
print(psutil.net_io_counters())
#获取网络每个接口IO信息
print(psutil.net_io_counters(pernic=True))
其他系统信息
import psutil,datetime
#获取当前登录系统用户信息
print(psutil.users())
#获取开机时间
print(psutil.boot_time())
#格式化时间
print(datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S"))
系统进程管理
进程信息
import psutil
#列出所有进程PID
print(psutil.pids())
#实例化一个Process对象,参数为进程PID
p=psutil.Process(274)
#获取进程名字
print(p.name())
#获取进程bin目录
print(p.exe())
#获取进程工作目录的绝对路径
print(p.cwd())
#获取进程状态
print(p.status())
#获取进程创建时间
print(p.create_time())
#获取进程uid信息
print(p.uids())
#获取进程gid信息
print(p.gids())
#获取进程CPU时间信息
print(p.cpu_times())
#获取进程CPU亲和度
print(p.cpu_affinity())
#获取进程的内存利用率
print(p.memory_percent())
#获取进程内存rss、vms等信息
print(p.memory_info())
#获取进程IO信息
print(p.io_counters())
#获取打开进程socket的namedutples列表
print(p.connections())
#获取进程开启的线程数
print(p.num_threads())
IP地址处理模块-IPy
IP地址、网段的基本处理
from IPy import IP
#分析IP属于IPv4还是IPv6
print(IP('172.25.0.0/24').version())
#获取指定网段的IP个数和所有IP地址清单
ip=IP('192.168.0.0/16')
print(ip.len())
#for x in ip:
# print(x)
ip=IP('192.168.1.11')
#反向解析地址
print(ip.reverseNames())
#获取网络类型,PRIVATE为私网,PUBLIC为公网
print(ip.iptype())
#转换成整型格式
print(ip.int())
#转成进制,strHex()为十六进制,strBin()为二进制
print(ip.strHex())
#十六进制转成IP格式
print(IP(0x8080808))
#网络地址转换
print(IP('192.168.1.0').make_net('255.255.255.0'))
print(IP('192.168.1.0/255.255.255.0',make_net=True))
print(IP('192.168.1.0-192.168.1.255',make_net=True))
#也可以通过strNormal方法指定不桶wantprefixlen参数值定制不同输出类型的网段
#0,无返回(192.168.1.0)
#1,prefix格式(192.168.1.0/24)
#2,decimalnetmask格式(192.168.1.0/255.255.255.0)
#3,lastIP格式(192.168.1.0-192.168.1.255)
print(IP('192.168.1.0/24').strNormal(2))
多网格计算
from IPy import IP
#IP对象比较
print(IP('10.0.0.0/24')<IP('12.0.0.0/24'))
#判断IP地址和网段是否包含于另一个网段中
print('192.168.1.100' in IP('192.168.1.0/24'))
print(IP('192.168.1.0/24') in IP('192.168.0.0/16'))
#判断两个网段是否存在重叠
print(IP('192.168.0.0/23').overlaps('192.168.1.0/24'))
#根据输入的IP或者网段返回IP信息
from IPy import IP
ip_s=input('输入IP或者网段:')
ips=IP(ip_s)
if len(ips)>1:
print('网络地址:%s'%ips.net())
print('网络掩码地址:%s'%ips.netmask())
print('网络广播地址:%s'%ips.broadcast())
print('反向解析:%s'%ips.reverseNames()[0])
print('网络子网数:%s'%len(ips))
else:
print('反向解析:%s'%ips.reverseNames()[0])
print('十六进制地址:%s'%ips.strHex())
print('二进制地址:%s'%ips.strBin())
print('地址类型:%s'%ips.iptype())
DNS处理模块-dnspython
解析A记录
import dns.resolver
domain=input('请输入域名:')
A=dns.resolver.query(domain,'A')
for i in A.response.answer:
for j in i.items:
print(j.address)
解析MX记录
import dns.resolver
domain=input('请输入域名:')
MX=dns.resolver.query(domain,'MX')
for i in MX:
print('MX preference=',i.preference,'mail exchanger=',i.exchange)
解析NS记录
import dns.resolver
domain=input('请输入域名:')
NS=dns.resolver.query(domain,'NS')
for i in NS.response.answer:
for j in i.items:
print(j.to_text())
解析CNAME记录
import dns.resolver
domain=input('请输入域名:')
CNAME=dns.resolver.query(domain,'CNAME')
for i in CNAME.response.answer:
for j in i.items:
print(j.to_text())
List of learning reference documents:
- 《Python自动化运维技术与最佳实践-刘天斯》