提高工作效率,轻松实现IP地址批量ping

news2024/10/4 5:36:28

在这里插入图片描述

在实际操作中,我们经常需要对一系列已分配的IP进行ping检测,以确认其是否正在运行。然而,我们的表格仅有一个标签页,且仅包含一个ip地址列。

iP
192.168.196.106
192.168.196.107
192.168.196.108
192.168.196.109

实现思路

我们的策略是读取表格,然后对每个IP地址使用ping3进行ping检测。为了提高ping检测的效率,我们采用多线程并发技术,因为ping操作是一种占用I/O的行为,更适合使用多线程。在这里,我们使用Python内置的threading模块,通过创建Thread类的线程对象并执行它来实现多线程。线程对象的创建包括两部分:目标函数(target)和参数列表(args)。在执行时,将参数列表传递给目标函数。

首先,我们编写一个名为single_ping的函数,用于执行单个IP地址的ping操作。接下来,我们将使用Python的内置threading模块创建多个线程来执行这个函数。由于线程的执行顺序是不确定的,我们将结果存储在一个名为ping_results 的字典中。在每个线程开始执行时,我们将传入该字典,并在执行过程中更新自己IP地址的执行结果。这样可以避免冲突。

代码实现

按照以上思路,我们编写的代码结果如下:

import threading
import pandas  as pd
import ping3



def single_ping(ip,timeout,ping_results):
    '''
    description: ping一个单独的IP地址
    :param ip: 要ping的IP地址
    :param timeout: ping的超时时间
    :param ping_results:  所有IPping的结果,字典格式,key是IP,value是ping的结果。    
    '''
    ping_time = ping3.ping(ip,timeout=timeout)
    ping_results[ip] = ping_time



def batch_ping(file="ping.xlsx",result_file="ping_result.xlsx",timeout=4):
    '''
    description: 从文件中读取待ping的列表,然后使用多线程批量去ping,结果再到一个表格文件中
    :param file: 待ping的表格文件
    :param timeout: 超时时间
    '''
    # 通过pandas读取ip列表
    df = pd.read_excel(file)
    ip_items = df.to_dict(orient='records')
    
    # 将字典的列表转换为字符串的列表
    ip_list = [ i['ip'] for i in ip_items]

    # 用于存储ping结果的字典
    ping_results = {}
    # 使用多线程进行批量的ping操作
    threads = []
    # 循环读取IP
    for ip in ip_list:
        # 将每个IP地址传、超时时间和存放结果的字典,通过多线程方式传给目标函数,创建一个线程
        t = threading.Thread(target=single_ping,args=(ip,timeout,ping_results))
        # 线程追加到线程池
        threads.append(t)
        # 启动此线程任务
        t.start()
    # 阻塞多线程任务,即当所有的线程执行完成后再继续主程序的余下部分代码
    for t in threads:
        t.join()
    
    # 将ping的结果再写会到原来的字典列表中去
    # 以从表格中读取到的字典列表作为数据源,以保证顺序一致
    for i in ip_items:
        # 根据 IP 地址获取其结果
        item_ping_result = ping_results[i['ip']]
        # 对情况进行判断,以文字的方式编写结果
        if item_ping_result is None:
            i['result'] = '超时失败'
        elif item_ping_result is False:
            i['result'] = '域名解析失败'
        else:
            i['result'] = '成功'
    # 极简表格操作法,写入表格
    new_df = pd.DataFrame(ip_items)
    new_df.to_excel(result_file,index=False,columns=['ip','result'])

if __name__ == '__main__':
    batch_ping()

注意: ip_list = [ i['ip'] for i in ip_items]中的ip是对于ping.xlsx表头的字段

脚本运行结果是生成一个表格文件,其内容表

iPresult
192.168.196.106域名解析失败
192.168.196.107成功
192.168.196.108域名解析失败
192.168.196.109域名解析失败

结合这段代码和 netaddr 库,我们可以编写一个批量 ping 指定网段的功能,并对 IP 地址的使用情况进行总结分析。例如,我们可以查看 IP 地址的使用百分比,以及剩余可分配的 IP 地址等。此外,我们还可以与 Django 和 netaddr 结合,编写一个 IPAM(IP 地址管理系统),用于记录分配出去的 IP 地址以及查看 IP 的实际使用情况等。

扩展知识点:
ping3是一个基于Python3的ICMP ping实现模块,可以使用原始套接字进行ping操作。它是一个纯粹的Python3版本的ICMP ping工具包,无需特定用户权限即可发送ICMP包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/953305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面对银行分支机构,UPS监控该如何应对?

UPS系统确保在电力中断或故障时,银行的关键系统和设备能够继续正常运行,从而防止因电力波动而可能导致的数据丢失和业务中断。 为了实现有效的UPS监控,银行需要应用监控系统。银行可以实时监测UPS系统的状态,及时发现潜在问题并采…

智能感测型静电中和设备由哪些部分构成

智能感测型静电中和设备是一种利用先进的传感技术和自动控制系统,以及适应性算法来实现静电电荷的中和和消除的设备。它主要用于消除静电带来的问题,比如电子元件的损坏、电磁干扰、火灾等。 智能感测型静电中和设备通常包括以下几个主要部分&#xff1…

年轻人的新社交密码:高质量小众社交app皮雀,到底怎么玩?

新一代年轻人被各种生活、工作和强社交关系充斥,面临着巨大的社交压力,因此他们在社交的选择方向上,逐渐远离线下社交,去选择线上社交,不同于有心理负担的线下社交,线上社交具有更多的选择性。基于能为年轻…

地下管线三维自动建模软件MagicPipe3D V3.0发布

2023年9月1日经纬管网建模系统MagicPipe3D V3.0正式发布,该版本经过众多用户应用和反馈,在三维地下管网建模效果、效率、适配性方面均有显著提升!MagicPipe3D本地离线参数化构建地下管网模型(包括管道、接头、附属设施等&#xff…

2023固态U盘、移动硬盘对比

最近测试了几款固态U盘/移动硬盘,希望能大家的选购有点帮助。 1、移速逸动-2T(500MB/s):799元某音 2、爱国者u397-1T(1000MB/s):578元京东 3、梵想FF520-512G(500MB/s&#xff09…

直播程式源码平台细讲HTTP协议:超文本传输

HTTP协议的简介 HTTP协议是一种数据通信协议,是浏览器与服务器之间的协议,HTTP协议的中文全称为超文本传输协议,HTTP协议在直播程式源码平台中,承载着数据传输的重要任务,用户可以通过HTTP协议获取直播程式源码平台中提…

Docker部署RustDesk Server 设置开机自启

三、Docker安装 Docker官方和国内daocloud都提供了一键安装的脚本,使得Docker的安装更加便捷。 官方的一键安装方式: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 国内 daocloud一键安装命令: curl -sSL https://…

【LeetCode】1654:到家的最少跳跃次数的解题思路 关于力扣无法return的BUG的讨论

文章目录 一、题目二、题解与代码三、神奇的BUG3.1 无法执行的 return 和 break 语句3.2 通过另一个 break 解决 一、题目 有一只跳蚤的家在数轴上的位置 x 处。请你帮助它从位置 0 出发,到达它的家。 跳蚤跳跃的规则如下: 它可以 往前 跳恰好 a 个位…

Android OTA 相关工具(七) 使用 lpunpack 解包 super.img

文章目录 1. lpunpack 的编译2. lpunpack 的帮助信息3. lpunpack 的用法3.1 解包所有镜像3.2 解包指定名称分区镜像3.3 解包指定槽位分区镜像 4. 其它 从 Android 10(Q) 开始,引入了动态分区,伴随的就是一组动态分区内容数据增删改查相关的操作&#xff…

数字证书UKey太多怎么管理,一分钟轻松学会

公司数字证书Ukey太多,管理乱,也不能满足异地使用需求,怎么办? 一台USB Sever就能解决! 第一步 USB Sever有2口、8口、24口多种规格, 根据你的数字证书Ukey数量选择合适的规格。 第二步 把Ukey全部插上…

韶音骨传导耳机好不好,韶音骨传导耳机值得入手吗

韶音耳机的质量还是很不错的,其实力相比于百元价位的耳机而言领先了不少,具备多种功能,佩戴起来也是有着舒适性。它自主研发了骨传导音频技术,不过在今年开始,似乎已经将方向开始往运动偏移。 而在韶音的骨传导耳机中&…

PHY 芯片接口直连(不使用变压器)的设计

1.基础知识 网口 PHY 芯片对 TX 和 RX 信号有两种驱动方式:电压驱动和电流驱动。不同的驱动方式决定了 PHY 在与变压器连接的时候,变压器的中心抽头的接法。电压型中心抽头通过电容接到地,电流型中心抽头上拉至VDD,VDD为PHY的供电…

【问题】jdk20执行虚拟线程报错解决方案

java: ofPlatform() 是预览 API,默认情况下处于禁用状态。 (请使用 --enable-preview 以启用预览 API) 在idea增加配置 编辑配置 增加jvm参数 然后去执行 public static void main(String[] args) {int 次数 100000;System.out.println(&q…

智汇云舟亮相中国安防工程商集成商大会

智汇云舟亮相中国安防工程商集成商大会,以视频孪生驱动安防行业数字化转型 近日,由中国安全防范产品行业协会指导,永泰传媒主办的中国安防工程商(系统集成商)大会暨第69届中国安防新产品、新技术成果展示在石家庄圆满…

轻松解决Mac和Windows中Unity汉化问题

本文是参考https://blog.csdn.net/ChinarCSDN/article/details/83213739该文写的。 上述作者是针对windows平台来写的,亲测方法可用。文中有中文字体包,可自行下载。 其他中文包下载地址: https://new-translate.unity3d.jp/v1/live/54/XX…

Kafka系列五消费者

文章首发于个人博客,欢迎访问关注:https://www.lin2j.tech 与生产者对应的是消费者,应用程序可以通过 KafkaConsumer 来订阅主题,从主题中拉取消息。 使用 KafkaConsumer 之前需要先理解消费者和消费者组的概念。 消费者与消费…

性能提升3-4倍!贝壳基于Flink + OceanBase的实时维表服务

作者介绍:肖赞,贝壳找房(北京)科技有限公司 OLAP 平台负责人,基础研发线大数据平台部架构师。 贝壳找房是中国最大的居住服务平台。作为居住产业数字化服务平台,贝壳致力于推进居住服务的产业数字化、智能…

〔020〕Stable Diffusion 之 骨骼姿势 篇

✨ 目录 🎈 姿势检测 / OpenPose🎈 姿势检测 OpenPose 参数介绍🎈 姿势检测 OpenPose 基本使用🎈 深度库 / Depth Lib🎈 深度库 Depth Lib 参数介绍🎈 3D姿势检测 / 3D Openpose Editor🎈 3D姿势…

安达发|2024年,APS计划排产技术应运而生

随着制造业竞争加剧,企业如何提高生产效率、降低成本、满足客户需求成为关键。2024年,APS计划排产技术应运而生,通过实施APS自动排程,企业将获得诸多效益。 近年来,全球制造业正面临着原材料价格波动、人工成本上升、环…