WEB开发网
开发学院软件开发Python 使用 Python 创建 UNIX 命令行工具 阅读

使用 Python 创建 UNIX 命令行工具

 2008-05-31 12:48:48 来源:WEB开发网   
核心提示: arping 函数#!/usr/bin/env pythonfrom scapy import srp,Ether,ARP,confdef arping(iprange="10.0.1.0/24"):conf.verb=0ans,unans=srp(Ether(dst=

arping 函数

    #!/usr/bin/env python
    
    from scapy import srp,Ether,ARP,conf
    
    def arping(iprange="10.0.1.0/24"):
     conf.verb=0
     ans,unans=srp(Ether(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
    
    #Print results
    values = arping()
    
    for ip,mac in values:
    print ip,mac    

正如您看到的,我们编写了一个函数,该函数接受 IP 地址或网络并返回嵌套的 IP/MAC 地址列表。我们现已为第二部分做好准备,为我们的工具创建一个命令行接口。

解决方案第 2 部分:从我们的 arping 函数创建命令行工具

在本例中,我们综合本文前面部分的想法,创建一个能解决我们初始问题的完整命令行工具。

arping CLI

  #!/usr/bin/env python
 
  import optparse
  from scapy import srp,Ether,ARP,conf
 
  def arping(iprange="10.0.1.0/24"):
   """Arping function takes IP Address or Network, returns nested mac/ip list"""
 
   conf.verb=0
   ans,unans=srp(Ether(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
 
  def main():
   """Runs program and handles command line options"""
 
   p = optparse.OptionParser(description=' Finds MAC Address of IP address(es)',
                  prog='pyarping',
                  version='pyarping 0.1',
                  usage='%prog [10.0.1.1 or 10.0.1.0/24]')
 
  options, arguments = p.parse_args()
  if len(arguments) == 1:
   values = arping(iprange=arguments)
   for ip, mac in values:
    print ip, mac
  else:
   p.print_help()
 
  if __name__ == '__main__':
   main()

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:使用 Python 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接