当前位置: 首页 > news >正文

Python IP可达性检测脚本解析

目录

  1. 脚本概述

  2. 代码解析

    • 导入模块

    • 核心函数check_ip

    • 主程序逻辑

  3. 使用说明

  4. 脚本优化建议

  5. 完整代码

脚本概述

这是一个使用Python编写的IP地址可达性检测脚本,主要功能是批量检测192.168.124.1到192.168.125.254范围内所有IP地址的可达性,并将可达的IP地址保存到文件中。脚本采用了多线程技术,可以同时检测多个IP地址,大大提高了检测效率。

代码解析

导入模块

import pythonping
import os
from concurrent.futures import ThreadPoolExecutor, as_completed
  • pythonping: 用于发送ICMP ping请求的Python库

  • os: 提供操作系统相关功能,这里用于文件操作

  • ThreadPoolExecutor: 实现线程池功能

  • as_completed: 用于获取已完成的任务

核心函数check_ip

def check_ip(ip):try:response = pythonping.ping(ip, count=2, timeout=1, verbose=False)return ip if response.success(option=1) else Noneexcept:return None

函数功能解析:

  1. 使用pythonping向指定IP发送2个ping包,超时时间为1秒

  2. 如果ping成功,返回IP地址

  3. 如果ping失败或发生异常,返回None

  4. verbose=False参数关闭了ping的详细输出

主程序逻辑

if os.path.exists('reachable_ip.txt'):os.remove('reachable_ip.txt')ip_list = [f'192.168.{ip3}.{ip4}' for ip3 in range(124,126) for ip4 in range(1,255)]
with ThreadPoolExecutor(max_workers=50) as executor, \open('reachable_ip.txt', 'a') as ip_file:futures = {executor.submit(check_ip, ip): ip for ip in ip_list}for future in as_completed(futures):ip = futures[future]result = future.result()if result:print(f'{ip} is reachable')ip_file.write(f'{ip}\n')else:print(f'{ip} is not reachable')

执行流程:

  1. 如果存在reachable_ip.txt文件则删除

  2. 生成IP地址列表:192.168.124.1到192.168.125.254

  3. 创建最大50个线程的线程池

  4. 为每个IP提交一个检测任务到线程池

  5. 使用as_completed获取已完成的任务

  6. 将可达的IP地址写入reachable_ip.txt文件

  7. 打印每个IP的检测结果

使用说明

  1. 安装依赖库:

    pip install pythonping
  2. 运行脚本:

    python ip_checker.py
  3. 查看结果:

    • 控制台会输出每个IP的检测结果

    • 可达的IP会保存在reachable_ip.txt文件中

完整代码

import pythonping
import os
from concurrent.futures import ThreadPoolExecutor, as_completed
def check_ip(ip):try:response = pythonping.ping(ip, count=2, timeout=1, verbose=False)return ip if response.success(option=1) else Noneexcept:return None
if os.path.exists('reachable_ip.txt'):os.remove('reachable_ip.txt')ip_list = [f'192.168.{ip3}.{ip4}' for ip3 in range(124,126) for ip4 in range(1,255)]
with ThreadPoolExecutor(max_workers=50) as executor, \open('reachable_ip.txt', 'a') as ip_file:futures = {executor.submit(check_ip, ip): ip for ip in ip_list}for future in as_completed(futures):ip = futures[future]result = future.result()if result:print(f'{ip} is reachable')ip_file.write(f'{ip}\n')else:print(f'{ip} is not reachable')

相关文章:

  • innovus: ecoAddRepeater改变hier层级解决办法
  • TinaCloud:为 TinaCMS 打造的专业云服务平台
  • 2025年6月4日第一轮
  • layer norm和 rms norm 对比
  • 【AI学习笔记】Coze工作流写入飞书多维表格(即:多维表格飞书官方插件使用教程)
  • 【学习记录】如何使用 Python 提取 PDF 文件中的内容
  • 2025年计算机科学与网络安全国际会议(CSNS 2025)
  • 【Linux仓库】冯诺依曼体系结构与操作系统【进程·壹】
  • Delphi用if else实现 select case、switch语句功能,实现case 以字符串为分类条件。
  • 【深度学习优化算法】02:凸性
  • [蓝桥杯]密码脱落
  • 行为型-迭代器模式
  • Elasticsearch集群状态为RED且存在未分配分片问题排查诊断
  • 本地IP配置
  • FTP 和 SFTP 介绍及 C/C++ 实现分析
  • 【拓扑】1639.拓扑排序
  • NFT 市场开发:基于 Ethereum 和 IPFS 构建去中心化平台
  • 美业破局:AI智能体如何用数据重塑战略决策(5/6)
  • AI基础认知
  • 电网“逆流”怎么办?如何实现分布式光伏发电全部自发自用?
  • 最便宜的网站建设公司/关键词优化排名公司
  • 网站制作售后/注册域名费用一般多少钱
  • 专业做网站广州/百度com百度一下你
  • 网站推荐你了解我意思吧/软文接单平台
  • 网站做推广的方式/网络推广引流有哪些渠道
  • 怎么在百度上创建网站/百度竞价排名推广