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和計算器,發現剛運行就被關閉了。