python簡單的監控指令碼-利用socket、psutil阻止遠端主機執行特定程式
python簡單的監控指令碼-利用socket、psutil阻止遠端主機執行特定程式
psutil是一個跨平臺的庫(http://code.google.com/p/psutil/),能夠輕鬆的實現獲取系統執行的程序和系統利用率(CPU、記憶體、磁碟、網路等)資訊。它主要應用於系統監控,分析和限制系統資源及程序的管理。
psutil是第三方庫需要安裝。 pip installpsutil
利用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和計算器,發現剛執行就被關閉了。