python多线程实现局域网活跃IP扫描

import platform 
import sys 
import os 
import time 
import thread 
  
def get_os(): 
   os = platform.system() 
   if os == "Windows": 
      return "n"
   else: 
      return "c"
   
def write_log(ip_str):
   log_file = "ip_log.txt"
   file = open(log_file,'a')
   file.write(ip_str+os.linesep)
   file.close()

    
def ping_ip(ip_str): 
   cmd = ["ping", "-{op}".format(op=get_os()), 
     "1", ip_str] 
   output = os.popen(" ".join(cmd)).readlines() 

   flag = False
   for line in list(output): 
      if not line: 
        continue
      if str(line).upper().find("TTL") >=0: 
        flag = True
        break
   if flag:
      write_log(ip_str)
      print "ip: %s is ok ***"%ip_str 
  
def find_ip(ip_prefix): 
   for i in range(1,256): 
      ip = '%s.%s'%(ip_prefix,i) 
      thread.start_new_thread(ping_ip, (ip,)) 
      time.sleep(0.3) 
    
if __name__ == "__main__": 
   print "start time %s"%time.ctime() 
   commandargs = sys.argv[1:] 
   args = "".join(commandargs)   

   ip_prefix = '.'.join(args.split('.')[:-1]) 
   find_ip(ip_prefix) 
   print "end time %s"%time.ctime()

你可能感兴趣的:(python)