python之运维脚本(psutil)

1.  安装psutil

psutil用于在python中检索有关正在运行的进程和系统利用率的信息

cmd下运行pip install psutil


2.  获取cpu信息

第一个cpu的逻辑数量,第二个是cpu的物理数量

查看cpu的完整信息

获取cpu使用率

获取内存信息,swap使用就用swap_memory方法

磁盘数据,磁盘利用率用disk_usage,io用disk_io_counters方法,默认disk_io_counters方法获取的是硬盘总的io数和读写信息,如果需要获取单个分区的io和读写信息加上"perdisk=True"参数。最后一个可以获取实时读取速度

 

获取网络信息,网络io和磁盘io使用方法差不多,主要使用net_io_counters方法,如果需要获取单个网卡的io信息,加上pernic=True参数。

查看系统全部进程

类似于linux的ps

查看单个进程


3.  练习一:远程监控

  服务器端

#远程监控服务器  server
import socket
import time
import threading

s=socket.socket()
s.bind(('0.0.0.0',2345))
s.listen(8)
with open("blacklist.txt") as f:
    blacklist=f.read()
def tcplink(sock,addr):
    print(f"客户端{addr}已接入")
    print(f"{'time':16s}{'tcpu':8s}{'tmem':8s}{'tdisk':8s}thost")
    while 1:
        data=sock.recv(2048)
        result=data.decode()
        print(result+"\t"+addr[0])
        sock.send(blacklist.encode())
#            blacklist=[i.strip() for i in blacklist]
        time.sleep(1)

while 1:
    sock,addr=s.accept()
    t=threading.Thread(target=tcplink,args=(sock,addr))
    t.start()

  客户端

#远程监控客户端  agent
import psutil
import socket
import time
import sys

sip=sys.argv[1]
sport=int(sys.argv[2])
s=socket.socket()
while 1:
    try:
        s.connect((sip,sport))
        break
    except:
        time.sleep(10)

while 1:
    c=psutil.cpu_percent(interval=1)
    m=psutil.virtual_memory().percent
    d=psutil.disk_usage("/").percent
    t=time.strftime("%H:%M:%S")
    result=f"{t}\t{c}\t{m}\t{d}"
    s.send(result.encode())
    blacklist=s.recv(1024).decode()
    pids=psutil.pids()
    for pid in pids:
        try:
            p=psutil.Process(pid)
            if p.name() in blacklist:
                p.terminate()
        except:
            pass

 

 在客户端没有启动时,服务器端并不会报错,隔断时间会重新连接一次


发布了84 篇原创文章 · 获赞 68 · 访问量 3427

猜你喜欢

转载自blog.csdn.net/qq_37077262/article/details/103948702