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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值