why and how to run forever and debug when error in for proc in psutil.process_iter()?

Ho Yeung Lee jobmattcon at gmail.com
Sun Mar 26 07:32:02 EDT 2017


On Sunday, March 26, 2017 at 10:33:51 AM UTC+8, Deborah Swanson wrote:
> Someone here can probably help you, but they'll need your Python
> version, operating system, and full traceback. They get tired of saying
> so. 
>> In this case, the full traceback is needed to see what went wrong and
> when (after which statements).
>>> Ho Yeung Lee wrote, on Saturday, March 25, 2017 1:38 AM
> > 
> > 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]
> > -- 
> > https://mail.python.org/mailman/listinfo/python-list
> >

after window update error, I can not login window and reset system and
reinstall every thing
python 2.7.12
there is no error when run, but it end after running a few minutes
if commend the forever loop in main
import os
import psutil
import multiprocessing
import time
import sys
def cleantask():
 bufsize = 0
 f = open("d:\\killlist.txt",'a',bufsize)
 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" in str(proc.name).lower():
 os.system("taskkill /f /pid "+str(proc._pid))
 #print("here8")
 print(str(linelist[2])+","+str(linelist[4])+","+proc.name +" is killed ")
 #print("here9")
 path = proc.exe()
 print(str(linelist[2])+","+str(linelist[4])+","+proc.name +" at " + str(path))
 #print("here10")
 except:
 dummy = 1
 #print "Unexpected error:", sys.exc_info()[0]
 #print "Unexpected error:", sys.exc_info()[1]
 if "ESTAB" 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("here1a")
 print(str(linelist[2])+","+str(linelist[4])+","+str(proc.name))
 #print("here2a")
 #print(str(linelist[2])+","+str(linelist[4])+","+proc.name)
 #print("here3a")
 if "111.221" in str(linelist[2]):
 dummy = 1
 elif "explorer.exe" in str(proc.name).lower():
 dummy = 1
 elif "svchost" in str(proc.name).lower():
 dummy = 1
 elif "cmd" in str(proc.name).lower():
 dummy = 1
 else:
 os.system("taskkill /pid "+str(proc._pid))
 #print("here1")
 print(str(linelist[2])+","+str(linelist[4])+","+str(proc.name) +" is killed ")
 #print("here2")
 path = proc.exe()
 print(str(linelist[2])+","+str(linelist[4])+","+str(proc.name) +" at " + str(path))
 #print("here3")
 f.write(str(linelist[2])+","+str(linelist[4])+","+str(proc.name) +" at " + str(path) +"\n")
 except:
 dummy = 1
 print "Unexpected error:", sys.exc_info()[0]
 print "Unexpected error:", sys.exc_info()[1]
 #print("here6")
 f.write(str(linelist[2])+","+str(linelist[4])+","+str(proc.name) +" can not kill at " + str(path) +"\n")
 #print("here7")
 f.flush()
 print(line)
 if not line: break
 f.close()
if __name__ == '__main__':
 print("main")
 #while 1:
 try:
 numberofrunning = 0
 plist = []
 for ii in range(0,100): 
 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 > 100:
 print "more than 100 process"
 else:
 print("number of process = " + str(numberofrunning))
 if numberofrunning <= 90:
 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

AltStyle によって変換されたページ (->オリジナル) /