python简单的监控脚本-利用sock

发布时间:2019-05-16 21:35:08编辑:auto阅读(2058)

    python简单的监控脚本-利用socket、psutil阻止远程主机运行特定程序

    psutil是一个跨平台的库(http://code.google.com/p/psutil/),能够轻松的实现获取系统运行的进程和系统利用率(CPU、内存、磁盘、网络等)信息。它主要应用于系统监控,分析和限制系统资源及进程的管理。

    psutil是第三方库需要安装。pip install psutil

    利用socket,psutil实现阻止远程主机运行特定的程序,本例的黑名但是直接写死的,也可以加载一个黑名单文件,方便以后扩展

    客户端:

    #控制进程,客户端
    import sys
    import psutil
    import socket
    import time
    
    server=sys.argv[1]
    s=socket.socket()
    while 1:
        try:
            s.connect((server,1234)) #建立tcp连接
            break
        except:
            time.sleep(5)
    
    data=s.recv(1024).decode() #接收服务器发送的黑名单
    blacklist=data.split(",")  #str-->list
    print(blacklist)  
    s.close()       #接受到黑名单,关闭资源
    
    while 1:
        pids=psutil.pids()    #pids所有进程的进程id  (list)
        for i in pids:
            try:
                if psutil.Process(i).name() in blacklist:   #psutil.Process().name() 进程ID对应的程序名
                    psutil.Process(i).terminate()   #terminate 关闭程序
            except:
                pass
        time.sleep(1)        

    服务端:

    ##控制进程,服务端
    import sys
    import psutil
    import socket
    import time
    from threading import Thread
    s=socket.socket()
    s.bind(("0.0.0.0",1234))
    s.listen(5)
    blacklist=['Calculator.exe','QQ.exe']
    msg=','.join(blacklist)
    
    def tcplink(sock,addr): #把黑名单发送给客户端
        sock.send(msg.encode())
        print(addr,'OK!')
        sock.close()
    while 1:
        con,addr=s.accept()
        ts=[]
        t=Thread(target=tcplink,args=(con,addr))   #创建线程来处理tcp连接
        ts.append(t)
        t.start()
        for i in ts:
            i.join()

    测试:

    运行QQ和计算器,发现刚运行就被关闭了。

关键字