why and how to run forever and debug when error in for proc in psutil.process_iter()?
Ho Yeung Lee
jobmattcon at gmail.com
Sat Mar 25 04:37:54 EDT 2017
expect below to run forever and keep running a fixed number of thread in python
would like to kill tasks when process connect internet except chrome
and explorer.exe
i do this because MalwareBytes can not disconnect these existing trojan when my notebook connect internet
after run a few minutes, the program stopped, but i have already kept create process, why the whole program end?
why and how to debug when error in for proc in psutil.process_iter()?
import os
import psutil
import multiprocessing
import time
import sys
def cleantask():
p = os.popen("netstat -ano")
while 1:
line = p.readline()
if "TCP" in line or "UDP" in line:
linelist = line.split()
if len(linelist) > 4:
if "LISTEN" in str(linelist[3]):
for proc in psutil.process_iter():
try:
if "pop" not in str(proc.name).tolower():
os.system("taskkill /f /pid "+str(proc._pid))
except:
dummy = 1
#print "Unexpected error:", sys.exc_info()[0]
#print "Unexpected error:", sys.exc_info()[1]
if "ESTABLISHED" in str(linelist[3]):
if "127.0.0.1" not in str(linelist[2]):
for proc in psutil.process_iter():
try:
if str(linelist[4]) in str(proc._pid):
print(str(linelist[2])+","+str(linelist[4])+","+proc.name)
if "111.221" not in str(linelist[2]) and "explorer.exe" not in str(proc.name).tolower():
os.system("taskkill /f /pid "+str(proc._pid))
except:
dummy = 1
#print "Unexpected error:", sys.exc_info()[0]
#print "Unexpected error:", sys.exc_info()[1]
print(line)
if not line: break
if __name__ == '__main__':
print("main")
try:
numberofrunning = 0
plist = []
for ii in range(0,5):
p = multiprocessing.Process(target=cleantask(), args=(0,))
p.start()
plist.append(p)
numberofrunning = numberofrunning + 1
time.sleep(1)
for pp in plist:
pp.join()
if pp.is_alive() == False:
numberofrunning = numberofrunning - 1
plist.remove(pp)
if numberofrunning > 10:
print "more than 10 process"
else:
print("number of process = " + str(numberofrunning))
if numberofrunning <= 5:
p = multiprocessing.Process(target=cleantask(), args=(0,))
p.start()
plist.append(p)
numberofrunning = numberofrunning + 1
time.sleep(1)
except:
print "Unexpected error:", sys.exc_info()[0]
print "Unexpected error:", sys.exc_info()[1]
More information about the Python-list
mailing list