arp脚本的两种方法

来源:互联网 发布:淘宝店一件代发可靠吗 编辑:程序博客网 时间:2024/06/06 18:34

第一种是使用arping工具:

#!/usr/bin/env pythonimport subprocessimport sysimport redef 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 itemif __name__ == "__main__":    if len(sys.argv) > 1:        for ip in sys.argv[1:]:            print "arping", ip            arping(ip)    else:        arping()

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

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

#!/usr/bin/env pythonfrom scapy import srp,Ether,ARP,confimport sysdef 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 collectionif __name__ == "__main__":    if len(sys.argv) > 1:        for ip in sys.argv[1:]:            print "arping", ip            print arping(ip)    else:        print arping()


0 0
原创粉丝点击