#!/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
#############################
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()
定义一个 ping 函数,用于执行 ping 命令并判断主机存活。
在 name == “main” 条件下,创建一个进程池对象 pool,设置并行执行的进程数为 16(可以根据需要进行调整)。
生成 IP 地址列表 ips,其中包含了要检测的 IP 地址范围。
使用 pool.map() 方法将任务分发给进程池中的多个进程,5. 并使用 ping 函数对每个 IP 地址进行 ping 操作。
最后,关闭进程池并等待所有进程完成任务(通过调用 pool.close() 和 pool.join())。
这样,利用 multiprocessing.Pool 类可以并行地执行多个 ping 命令,提高脚本的效率。请注意,根据系统资源和需要,你可以自行调整并行执行的进程数。
个人觉得Linux下python还是没有shell那么快