python扫描局域网活动ip地址(python多线程)

发布时间:2020-09-01编辑:脚本学堂
本文介绍了python扫描局域网中活动IP地址的方法,python platform模块、sys模块、thread模块的例子。

内网主机自动分配IP地址,可以使用python/ target=_blank class=infotextkey>python脚本查看哪些ip地址在用,即找出局域网中的活跃IP地址

环境:
linux与windows

python多线程ping 1-255所有的地址,最简单的方法。

代码:
 

复制代码 代码示例:

#!/usr/bin/env python

#-*- 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:CodeHousepythontools>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