Python实现扫描局域网活动ip(扫描在线电脑)
内网的主机都是自动分配ip地址,有时候需要查看下有那些ip在使用,就写了个简单的脚本。
linux和windows下都可以用,用多线程来ping1-255所有的地址,效率不高,2分钟左右。先凑合和用吧。
#-*-coding:utf-8-*- #author:orangleliudate:2014-11-12 #python2.7.xip_scaner.py ''''' 不同平台,实现对所在内网端的ip扫描 有时候需要知道所在局域网的有效ip,但是又不想找特定的工具来扫描。 使用方法pythonip_scaner.py192.168.1.1 (会扫描192.168.1.1-255的ip) ''' importplatform importsys importos importtime importthread defget_os(): ''''' getos类型 ''' os=platform.system() ifos=="Windows": return"n" else: return"c" defping_ip(ip_str): cmd=["ping","-{op}".format(op=get_os()), "1",ip_str] output=os.popen("".join(cmd)).readlines() flag=False forlineinlist(output): ifnotline: continue ifstr(line).upper().find("TTL")>=0: flag=True break ifflag: print"ip:%sisok***"%ip_str deffind_ip(ip_prefix): ''''' 给出当前的127.0.0,然后扫描整个段所有地址 ''' foriinrange(1,256): ip='%s.%s'%(ip_prefix,i) thread.start_new_thread(ping_ip,(ip,)) time.sleep(0.3) if__name__=="__main__": print"starttime%s"%time.ctime() commandargs=sys.argv[1:] args="".join(commandargs) ip_prefix='.'.join(args.split('.')[:-1]) find_ip(ip_prefix) print"endtime%s"%time.ctime()
是应用的时候:pythonip_scaner.py192.168.31.1就会扫描1-255所有的ip地址了。
D:\CodeHouse\python\tools>pythonip_scaner.py10.0.1.38 starttimeWedNov1218:50:582014 ip:10.0.1.1isok*** ip:10.0.1.2isok*** ip:10.0.1.24isok*** ip:10.0.1.38isok*** ip:10.0.1.39isok*** endtimeWedNov1218:52:162014
就这样。