• ping使用


    使用shell ping一个网段

    #!/bin/sh
    
    for ib in $(seq 1 254); do
     ip="192.168.1.$ib"
      	(
            if  ping -c3 "$ip" >> 1.txt; then
    
            echo "$ip is alive"
            fi
    
        	) &
      	done
    wait
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 在每次循环的最后,使用 & 将子 shell 放入后台执行,这样可以并行地进行多个 ping 命令
    • 在所有子 shell 都完成执行之前,使用 wait 命令等待所有子进程的结束。
    • 脚本的实现原理是通过循环遍历 IP 地址范围,对每个 IP 地址执行 ping 命令,并根据退出状态码判断主机是否存活。由于使用了后台执行及 wait 命令,脚本能够并行地执行多个 ping 命令,提高了效率。最终,脚本会输出存活的主机的 IP 地址。

    #############################

    在使用pyhton演示一个

    import subprocess
    from multiprocessing import Pool
    
    def ping(ip):
        result = subprocess.run(["ping", "-c", "3", ip], stdout=subprocess.DEVNULL)
        if result.returncode == 0:
            print(f"{ip} is alive")
    
    if __name__ == "__main__":
        pool = Pool(processes=200)  # 使用 200 个进程并行执行 ping 命令
    
        ips = [f"192.168.1.{i}" for i in range(1, 254)]
    
        pool.map(ping, ips)
        pool.close()
        pool.join()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    使用了 Python 的 multiprocessing.Pool 类来创建进程池,并使用 map() 方法将任务分发给进程池中的多个进程并行执行。

    实现原理:

    1. 定义一个 ping 函数,用于执行 ping 命令并判断主机存活。

    2. name == “main” 条件下,创建一个进程池对象 pool,设置并行执行的进程数为 16(可以根据需要进行调整)。

    3. 生成 IP 地址列表 ips,其中包含了要检测的 IP 地址范围。

    4. 使用 pool.map() 方法将任务分发给进程池中的多个进程,5. 并使用 ping 函数对每个 IP 地址进行 ping 操作。

    5. 最后,关闭进程池并等待所有进程完成任务(通过调用 pool.close() 和 pool.join())。

    这样,利用 multiprocessing.Pool 类可以并行地执行多个 ping 命令,提高脚本的效率。请注意,根据系统资源和需要,你可以自行调整并行执行的进程数。

    个人觉得Linux下python还是没有shell那么快
    在这里插入图片描述

  • 相关阅读:
    docker私有仓库registry
    开源医疗大模型Llama3-Aloe-8B-Alpha,性能超越 MedAlpaca 和 PMC-LLaMA
    数据同步工具—sqoop 2.x
    Linux 安装 Nginx
    Apache DolphinScheduler的工作流传参
    【论文阅读】Twin Neural Network Regression
    RSA、DSA 和 ECC 加密算法有什么区别?
    河南分销系统开发利润怎么分配?
    蒲公英路由器如何设置远程打印?
    如何拥有自己的专属GPT-本地部署目前最强大模型llama3
  • 原文地址:https://blog.csdn.net/weixin_42562106/article/details/133662219