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
就这样。