#第一种方法
#!/usr/bin/env python
#_*_ coding:utf8 _*_

####  该脚本需要使用fping命令  如果没有安装需要提前安装fping
####  yum install fping


import os
ip = "10.10.0.1/24"
ips = ["10.10.0.1/24", "192.16.17.27/24"]  # 需要查询的IP的地址段状态的输入列表

iplist = 'iplist'  # 存储IP的文件名
path = os.path.dirname(os.path.abspath(__file__)) #得到当前文件夹路径
sh_path = os.path.join(path, iplist)  #组合文件名和路径
iplists = []  #存储IP的临时文件的列表
ip_dic = {} #存储ip和ip状态的字典 例如:'10.101.0.185': 'unreachable'  '10.101.0.50': 'alive'

#执行fping命令来获取,一个段的所有IP的分配情况

for i in range(len(ips)):
    list_name = sh_path + str(i)  #得到当前存储IP的文件名
    os.system('> %s;fping -g %s >> %s' % (list_name, ips[i], list_name))
    iplists.append(list_name)
    with open(list_name) as f:
         for data in f.readlines():
             temp = data.strip('\n')
             ip_dic[temp.split(" ")[0]] = temp.split(" ")[2]
#第二种方法

#!/usr/bin/env python2.7

# -*- coding: utf-8 -*-

 

 

from scapy.all import srp, Ether, ARP, conf   #要提前安装 pip install scapy包

lan = '10.10.10.0/24'   #给出想要查询的IP地址段

ans, unans = srp(Ether(dst="FF:FF:FF:FF:FF:FF")/ARP(pdst=lan), timeout=2)

for snd, rcv in ans:  #打印出MAC和IP

cur_mac = rcv.sprintf("%Ether.src%")

cur_ip  = rcv.sprintf("%ARP.psrc%")

print cur_mac + ' - ' +cur_ip