打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python多线程批量Ping主机IP的脚本
userphoto

2022.05.07 浙江省

关注

Python 编写多线程 Ping 主机IP的脚本

1. 先编写一个 Ping 主机IP的脚本

ping_ip.py

import subprocess
import time

# 记录开始执行的时间
start_time = time.time()

# 定义用来 ping 的254 个 ip
ip_list = ['10.3.1.'+str(i) for i in range(1,255)]  

for ip in ip_list:
    res = subprocess.call('ping -n 2 -w 5 %s' % ip,stdout=subprocess.PIPE)  # linux 系统将 '-n' 替换成 '-c'
    print(ip,True if res == 0 else False)

print('执行所用时间:%s' % (time.time() - start_time))

2. 改造成多线程的脚本

ping_threading.py

import threading
import subprocess
import time
from queue import Queue

# 定义工作线程
WORD_THREAD = 50

# 将需要 ping 的 ip 加入队列
IP_QUEUE = Queue() 
for i in range(1,255):
    IP_QUEUE.put('10.3.1.'+str(i))

# 定义一个执行 ping 的函数
def ping_ip():
    while not IP_QUEUE.empty():
        ip = IP_QUEUE.get()
        res = subprocess.call('ping -n 2 -w 5 %s' % ip,stdout=subprocess.PIPE)  # linux 系统将 '-n' 替换成 '-c'
        # 打印运行结果
        print(ip,True if res == 0 else False)

if __name__ == '__main__':
    threads = []
    start_time = time.time()
    for i in range(WORD_THREAD):
        thread = threading.Thread(target=ping_ip)
        thread.start()
        threads.append(thread)

    for thread in threads:
        thread.join()

    print('程序运行耗时:%s' % (time.time() - start_time))

3.运行效果对比

单线程的运行结果


50个线程的运行结果

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
快速多线程ping
NMAP 基础教程 | WooYun知识库
监控linux主机的shell脚本
在liunx双机下自己动手实现浮动IP技术
详解MySQL数据库的启动与终止
安全解析:DoS与DDoS技术详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服