码迷,mamicode.com
首页 > 编程语言 > 详细

「python」: arp脚本的两种方法

时间:2015-07-19 19:34:05      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

「python」: arp脚本的两种方法

第一种是使用arping工具:

#!/usr/bin/env python
import subprocess
import sys
import re

def arping(ipaddress = "192.168.1.1"):
    p = subprocess.Popen("/usr/sbin/arping -c 2 %s" % ipaddress, shell = True,
                            stdout = subprocess.PIPE)
    out = p.stdout.read()
    result = out.split()
    for item in result:
        if ":" in item:
            print item

if __name__ == "__main__":
    if len(sys.argv) > 1:
        for ip in sys.argv[1:]:
            print "arping", ip
            arping(ip)
    else:
        arping()

 

这种方法依赖于特定平台的工具,整体就是使用了一个系统调用。

第二种是使用scapy,这种方法可以实现平台无关化

#!/usr/bin/env python
from scapy import srp,Ether,ARP,conf
import sys

def arping(iprange="192.168.1.1/24"):
    conf.verb = 0
    ans,unans = srp(Enter(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=iprange),
                    timeout=2)
    collection = []
    for snd, rcv in ans:
        result = rcv.sprintf(r"%ARP.psrc% %Ether.src%").split()
        collection.append(result)
    return collection

if __name__ == "__main__":
    if len(sys.argv) > 1:
        for ip in sys.argv[1:]:
            print "arping", ip
            print arping(ip)
    else:
        print arping()

 

「python」: arp脚本的两种方法

标签:

原文地址:http://www.cnblogs.com/x113/p/4658960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!