• 技术文章 >后端开发 >Python教程

    Python实现扫描局域网活动ip(扫描在线电脑)

    2016-06-06 11:26:07原创1760
    内网的主机都是自动分配ip地址,有时候需要查看下有那些ip在使用,就写了个简单的脚本。
    linux和windows下都可以用,用多线程来ping1-255所有的地址,效率不高,2分钟左右。 先凑合和用吧。

    #-*- coding: utf-8 -*- 
    #author: orangleliu date: 2014-11-12 
    #python2.7.x ip_scaner.py 
     
    ''''' 
    不同平台,实现对所在内网端的ip扫描 
     
    有时候需要知道所在局域网的有效ip,但是又不想找特定的工具来扫描。 
    使用方法 python ip_scaner.py 192.168.1.1 
    (会扫描192.168.1.1-255的ip) 
    ''' 
     
    import platform 
    import sys 
    import os 
    import time 
    import thread 
     
    def get_os(): 
      ''''' 
      get os 类型 
      ''' 
      os = platform.system() 
      if os == "Windows": 
        return "n" 
      else: 
        return "c" 
       
    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: 
        print "ip: %s is ok ***"%ip_str 
     
    def find_ip(ip_prefix): 
      ''''' 
      给出当前的127.0.0 ,然后扫描整个段所有地址 
      ''' 
      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 ip_scaner.py 192.168.31.1 就会扫描 1-255所有的ip地址了。

    D:\CodeHouse\python\tools>python ip_scaner.py 10.0.1.38 
    start time Wed Nov 12 18:50:58 2014 
    ip: 10.0.1.1 is ok *** 
    ip: 10.0.1.2 is ok *** 
    ip: 10.0.1.24 is ok *** 
    ip: 10.0.1.38 is ok *** 
    ip: 10.0.1.39 is ok *** 
    end time Wed Nov 12 18:52:16 2014 

    就这样。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Python发送email的3种方法 下一篇:python删除列表中重复记录的方法
    千万级数据并发解决方案

    相关文章推荐

    • Python多进程知识点总结• Python模块化整理和第三方模块的安装(总结分享)• 详细了解Python进程池与进程锁• 一起聊聊Python的编码样式• python列表详解(总结分享)
    1/1

    PHP中文网