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和计算器,发现刚运行就被关闭了。