[PythonCode]扫描局域网的alive ip地址

内网的主机都是自动分配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

就这样。

本文出自 “orangleliu笔记本”博客,转载请务必保留此出处http://blog.csdn.net/orangleliu/article/details/41048173

作者: orangleliu

时间: 2024-08-07 17:20:16

[PythonCode]扫描局域网的alive ip地址的相关文章

局域网使用的IP地址范围

局域网可用的IP地址范围为: A类地址:10.0.0.0 - 10.255.255.255 B类地址:172.16.0.0 - 172.31.255.255 C类地址:192.168.0.0 -192.168.255.255 以上IP是都是属于局域网,但不一定是同一个局域网.要检测两台电脑是否在同一个局域网,可以再一台电脑上ping另外一台电脑的IP.能ping通的就是在同一个局域网中.局域网使用的IP地址范围,布布扣,bubuko.com

Linux下使用nmap扫描局域网存活的IP

[[email protected] ~]# nmap -sP 192.168.0.0/24|grep 192.mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using --system-dns or specify valid servers with --dns-serversNmap scan report for 192.168.0.1Nmap scan repor

shell命令查找局域网内使用的IP地址

需求:用shell命令是实现列出局域网内的IP地址使用信息 #!/bin/bash ipfile="ipinfo.txt" ip="192.168.10." for i in `seq 1 20` do ping -c 4 $ip$i | grep -q 'ttl=' && echo "$ip$i yes"|tee -a $ipfile || echo "$ip$i no" |tee -a $ipfile do

IP地址与MAC地址

众所周知,每一块网卡在出厂时都烧录了世界唯一的MAC地址,使用该地址可以在网络中识别不同的计算机.同时,互联网中也使用IP地址来定位客户端,这是因为IP地址比MAC地址定位更方便,而且也更加便于记忆.  1.1 IP地址在大多数的局域网中,IP地址是计算机之间通信的唯一依据.当网络中计算机数量比较多时,想要准确记忆每一台计算机的IP地址,显然是一件不太可能的事情.如果网络规模相当大,而且划分了VLAN,那么网络管理员更无法准确记忆用户IP地址了. IP信息查看--ipconfigipconfig

网络层-IP地址

以下内容是IPv4 IP地址长度32位,Java里面一个int的长度,总共分为5类IP地址 1:分类编址 A类IP地址0开头:           A类有31个位置可以变化,总数是2^31个, [(00000000)000-127(01111111)].[0-255].[0-255].[0-255] B类IP地址10开头,         B类有30个位置可以变化,总数2^30,            [(10000000)128-191(10111111)].[0-255].[0-255].[

C#服务器获取客户端IP地址以及归属地探秘

背景:博主本是一位Windows桌面应用程序开发工程师,对网络通信一知半解.一日老婆逛完某宝,问:"为什么他们知道我的地址呢,他们是怎么获取我的地址的呢?" 顺着这个问题我们的探秘开始: 第一步:简单的服务搭建 思路,通过HttpListener在本地搭建一个简易的服务器,开发程序为控制台接口,核心类 HttpListenerService: 方法 Start()开启线程池针对指定IP进行监听,本地的端口选取的9527(周星驰唐伯虎点秋香在华府的编号)  public void Sta

VPN组网中IP地址冲突解决方案

很多路由器的默认IP地址是192.168.1.1,用户买回来之后经常也没有去修改这个IP地址,估计国内有80%局域网目前都在使用192.168.1.0/24网段.如果不涉及与其他地方VPN组网,这样用一点问题都没有的,但是现在要VPN组网就发现两个局域网的IP地址是相同的,在远程访问时就会遇到问题,因为两边地址都相同,计算机没有那么智能,它例如我们要访问192.168.1.3的IP,计算机不知你是要访问对端的192.168.1.3还是本端的192.168.1.3,所以经常会遇到麻烦的.遇到这种问

企业VPN组网IP地址冲突解决方案

很多路由器的默认IP地址是192.168.1.1,用户买回来之后经常也没有去修改这个IP地址,估计国内有80%局域网目前都在使用192.168.1.0/24网段.如果不涉及与其他地方VPN组网,这样用一点问题都没有的,但是现在要VPN组网就发现两个局域网的IP地址是相同的,在远程访问时就会遇到问题,因为两边地址都相同,计算机没有那么智能,它例如我们要访问192.168.1.3的IP,计算机不知你是要访问对端的192.168.1.3还是本端的192.168.1.3,所以经常会遇到麻烦的. 遇到这种

Linux arping命令测试IP地址冲突

arping命令可以用来测试局域网各个主机之间的连通性,测试局域网中某个特定的IP地址是否已经被占用,进而可以有效检测局域网内的IP地址冲突问题. 如下图示例:arping -c 3 -f -D *.*.*.*(*.*.*.*为IP地址) 192.168.2.222返回空,说明这个IP地址没有被局域网占用. 192.168.2.106返回1,说明这个IP地址已经被占用,并且收到回复可以看到绑定该IP的终端的mac地址. arping命令详细介绍: 用法:arping [-fqbDUAV] [-c