热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python多线程popenping指定IP是否在线判断连通

Python多线程popen应用场景:有多台设备需要维护,周期短,重复度高;单台设备配备多个IP,需要经常确认网络是否通常;等等其他需要确

点击上方蓝字 ● 关注捷创源科技

问题描述

在某些问题背景下,需要确认是否多台终端在线,也就是会使用我们牛逼的ping这个命令,做一些的ping操作,如果需要确认的设备比较少,也还能承受。倘若,在手中维护的设备很多,那么这无疑会变成一个恼人的问题。脚本的作用就凸显了。另外,我们需要使用多线程的一种措施,否则单线程很难在很短的时间内拿到统计结果。

应用背景

有多台设备需要维护,周期短,重复度高;

单台设备配备多个IP,需要经常确认网络是否通常;

等等其他需要确认网络是否畅通的地方

1.采用单线程问题解决

    import time
    import os


    status1 = 'ping success'
    status2 = 'ping fail'




    def pingComputer():
    for i in range(1, 256):
    host = '192.168.2.' + str(i)


    nowTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    p = os.popen("ping " + host + " -n 2")
    line = p.read()


    # print(line)


    if "无法访问目标主机" in line:
    print(nowTime, host, status2)
    else:
    print(nowTime, host, status1)




    """
    ========================================
    主函数功能测试
    ========================================
    """
    if __name__ == '__main__':
    pingComputer()

    2.采用多线程问题解决

      """=== coding: UTF8 ==="""
      # 线程池:一次性开辟一些线程,我们用户直接给线程池提交任务,线程任务的调度交给线程池来完成
      from concurrent.futures import ThreadPoolExecutor
      import time
      import os


      # 成功标志状态
      status1 = 'ping success'
      # 失败标志状态
      status2 = 'ping fail'
      # 成功ping通IP列表
      listHostSuccess = []
      # 失败ping不通IP列表
      listHostFail = []




      def pingComputer(host):
      nowTime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
      p = os.popen("ping " + host + " -n 2")
      line = p.read()


      # print(line)


      if "无法访问目标主机" in line:
      listHostFail.append(host)
      print(nowTime, host, status2)
      else:
      listHostSuccess.append(host)
      print(nowTime, host, status1)




      def printResult():
      print(f"ping通:{len(listHostSuccess)}个")
      print(listHostSuccess)
      print(f"ping不通:{len(listHostFail)}个")
      print(listHostFail)




      """
      ========================================
      主函数功能测试
      ========================================
      """
      if __name__ == '__main__':
      # 创建线程池,50个线程
      with ThreadPoolExecutor(50) as pool:
      for i in range(1, 256): # 255个IP
      pool.submit(pingComputer, host=f"192.168.2.{i}")


      # 等待线程池中的任务全部执行完毕,才能继续执行(守护)
      print("完毕")


      # 打印结果
      printResult()


      关注上面微信公众号“捷创源科技”,每天获取技术干货,让我们一起成长!



      推荐阅读
      • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
      • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
      • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
      • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
        学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
      • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
        本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
      • 本文介绍了如何使用 Python 的 Bokeh 库在图表上绘制菱形标记。Bokeh 是一个强大的交互式数据可视化工具,支持丰富的图形自定义选项。 ... [详细]
      • 优化ListView性能
        本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
      • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
      • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
      • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
      • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
        本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
      • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
      • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
      • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
      • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
      author-avatar
      小荷蛋蛋图_945
      这个家伙很懒,什么也没留下!
      PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
      Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有