2024如何在Python中构建Ping Sweeper
python 是一种通用的编程语言,可用于编写不同类型的 gui 和基于 cli 的应用程序。 如果您是 python 新手,没有比从事小型项目更好的方法来加强您的学习了。
一个很棒的 Python 项目示例是一个 ping 扫描器,它是一个检查网络主机的小实用程序。 该脚本将涵盖基本的编程概念,包括打印语句、循环和函数。
什么是Ping Sweeper:
ping 扫描器是一个程序,它接受网络地址作为输入,ping 网络中的主机,并输出死活主机列表。 这是一种估算网络中在线主机数量并找出它们的 IPv4 地址的简单方法。
作为初学者,创建一个 ping 扫描器是复习 Python 基础知识的好方法。 这个动手小项目还将刷新您对网络基础知识的理解。
Ping Sweeper 的先决条件:
在开始开发过程之前,您应该确保您的系统上安装了最新版本的 Python。
立即学习“Python免费学习笔记”;
通过在命令提示符或终端中键入此命令并点击来检查您是否可以运行 Python 进入::
python --version登录后复制
在某些系统上,您可能需要运行:
python3 --version登录后复制
此命令应返回系统上安装的 Python 版本。 如果它返回类似“python not found”的错误,您应该安装 Python3,然后继续执行以下步骤。
编码 Ping Sweeper:
有多种方法可以构建此脚本。 有些会要求您安装和导入几个模块。 在这里,您将采用一种极简主义的方法,除了关键的之外没有外部依赖项 操作系统模块:.
在开始编码之前,分解需求以更好地了解您需要实现哪些功能。 该脚本分为三个部分:
接受输入的 IP 地址。 从 IP 地址中提取网络 ID。 遍历网络中的所有主机并打印主机是死是活。现在您已经清楚地了解了工作流程,让我们开始编程。
接受和处理输入
脚本的第一部分处理接受来自用户的输入并将 IPv4 地址减少到它的前三个八位字节。 这为我们提供了网络 ID:
import os登录后复制
IP = input(“[+] Enter the Host IP Address:\t”)
print(“[+] Starting Ping Sweeper on ” + IP)
dot = IP.rfind(“.”)
IP = IP[0:dot + 1]这 输入 :函数接受用户输入。 您可以使用字符串的 rfind(): 方法提取最后一次出现小数点的索引并将其存储在 点 :多变的。 通过保留从输入到最右边出现小数点的所有内容来跟进它。
扫描主机并打印主机状态
登录后复制登录后复制您已从输入 IP 派生网络地址。 您现在可以遍历最终 IPv4 八位字节的所有可能值:1–254。 在 for 循环中,将新 IP 存储在 主持人: 多变的。 此 IP 是基础 IP,后跟迭代器变量的值。 然后,使用 os.system(): 运行方法 平: 命令反对 主持人 :多变的。
for i in range(1, 255): host = IP + str(i) response = os.system("ping -c 1 -w 1 " + host + " >/dev/null")登录后复制
if response == 0:
print(host + ” is up”)
else:
print(host + ” is down”)
测试 回复: 值对 0 来确定主机的状态并决定它是在线还是离线。 如果 ping 遇到无响应的主机,它会返回一个非零值。 否则,它返回零以指示它可以到达的主机。
您可以添加 C :标志和 w: 标志,值为 1,用于原始 ping 命令。 这使得它只发送一个数据包并等待一秒钟来接收响应。 您的 ping 版本可能支持也可能不支持这些选项; 请查阅 ping 手册页进行检查。
您还应该将输出重定向到 /dev/null: 隐藏 ping 输出的详细信息。 请注意,ping 和 /dev/null 语法仅与 Unix 或 Linux 系统兼容。 您可以通过替换 C: 标志与 n :和 >/开发/空: 和 >无:.
运行 Ping Sweeper 脚本:
您可以在终端中或通过命令提示符运行此脚本。 启动一个终端,移动到脚本的位置并使用 python3 执行它:
cd /directory/sweeper/ python3 sweeper.py登录后复制
在终端中输入 IPv4 地址或子网,ping 扫描器应该开始工作并返回预期的输出。
有趣的 Python 项目创意:
动手学习可以说是学习编程语言的最好和最快的方法。 您从事的项目越多,您就越能掌握概念、培养基本技能并了解如何解决问题。
如果您缺少项目创意,请查看这份精选的 Python 最佳项目创意列表。