• 软件测试技术
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘

字号: | 推荐给好友 上一篇 | 下一篇

使用 Python 创建 UNIX 命令行工具

发布: 2008-6-04 23:05 | 作者: Paul Duvall | 来源: IBM | 查看: 226次 | 进入软件测试论坛讨论

领测软件测试网

#}'o k e0J,]|$V3lW0f 软件测试技术网pA q,Fy%D1}K8G

创建有用的命令行工具软件测试技术网U~!toi$B

软件测试技术网!r w6o D g.b

既然我们已经打好了基础,我们就可以继续创建解决特定问题的工具。对于本例,我们将使用 Python 的名为 Scapy 的网络库和交互式工具。Scapy 可以在大多数 *NIX 系统上正常工作,可以在第 2 层和第 3 层上发送数据包,并允许您创建只有几行 Python 代码的非常复杂的工具。如果您希望按部就班从头开始,请确保您正确地安装了必要的软件。

7i'_ }f'B-A$z;V 软件测试技术网i/CN [4N9X ]A

我们先定义要解决的新问题。

}:] kbkX:O 软件测试技术网F+S.o y,{%dM&v

问题:我希望创建一个使用 IP 地址或子网作为参数的命令行工具,并向标准输出返回 MAC 地址或 MAC 地址列表以及它们各自的 IP 地址。

i RW1Z.`%`C2m0A

|JL Vp6aV J&Z既然我们已经清楚地定义了问题,让我尝试将问题分解为尽可能简单的部分,然后逐一解决这些部分。对于这一问题,我看到了两个独立的部分。第一部分是编写接收 IP 地址或子网范围的函数,并返回 MAC 地址或 MAC 地址列表。我们可以在解决此问题之后再考虑将其集成到命令行工具中。

T0l!?n[0_
我从 Scapy 借用了一些代码并进行了简化,从而构建了一个简单的脚本,以通过 ping IP 地址获取 MAC 地址。您需要从这里下载最新版本的 scapy: scapy 如果您是从头开始创建程序,则将它保存在您的脚本所在的目录中。

9PoPp&| vb+X]6k解决方案第 1 部分:创建通过 IP 地址确定 MAC 地址的 Python 函数软件测试技术网u Pb'@+F1J,xI


A \J:|1W"q V!W#c@ narping软件测试技术网+b gO9Z#@#{-nZ6X
                from scapy import srp,Ether,ARP,confconf.verb=0ans,unans=srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="10.0.1.1"),timeout=2)for snd, rcv in ans:print rcv.sprintf(r"%Ether.src% %ARP.psrc%")

2S _q"vT@^