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

使用 Python 创建 UNIX 命令行工具

 2008-05-31 12:48:48 来源:WEB开发网   
核心提示: 创建有用的命令行工具既然我们已经打好了基础,我们就可以继续创建解决特定问题的工具,使用 Python 创建 UNIX 命令行工具(3),对于本例,我们将使用 Python 的名为 Scapy 的网络库和交互式工具,我还将实际输出更改为包括伪 MAC 地址,我们已经证实了我们可以通过 IP

创建有用的命令行工具

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

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

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

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

解决方案第 1 部分:创建通过 IP 地址确定 MAC 地址的 Python 函数

arping

from scapy import srp,Ether,ARP,conf
conf.verb=0
ans,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%")

该命令的输出是:

    sudo python arping.py
    00:00:00:00:00:01 10.0.1.1

请注意,使用 scapy 执行操作要求提升的权限,因此我们必须使用 sudo。考虑到本文的目的,我还将实际输出更改为包括伪 MAC 地址。我们已经证实了我们可以通过 IP 地址找到 MAC 地址。我们需要整理此代码以接受 IP 地址或子网并返回 MAC 地址和 IP 地址对。

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

Tags:使用 Python 创建

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