多线程ping

简介:
[背景]用来对IDC状态测试的程序
[脚本如下:]
#!/usr/bin/env python
#Create by badboy
#2009/11/22

'''multithreading ping for checking IDC status!'''

import threading
import os
import time

size = ('20','2000')
conf_file="data.ini"
log_file ="result.log"
lineip=[]
linemn=[]

class MyThread(threading.Thread):
    def __init__(self, func, dip):
        threading.Thread.__init__(self)
        self.func = func
        self.args = dip

    def run(self):
        apply(self.func, self.args)

def OpenFile():
    fp=file(conf_file)
    for line in fp:
         lines=line.split("=")
         linemn.append(lines[0].strip())
         lineip.append(lines[1].strip())
    return lineip,linemn
    fp.close()

def ToLog(*results):
    result=""
    for lineresult in results:
        result=result+lineresult+","
    result=result[0:-1]+"\n"
    fp=file(log_file,'a')
    fp.write(result)
    fp.close()

def Getime():
    return time.strftime("%Y/%m/%d %X")

def Ping(psize,dip,idcname):
        pingstr="ping -c 10 -s "+psize+" "+dip 
        Process(pingstr,idcname,dip,psize)

def Process(pingstr,idcname,dip,psize):
    strping = pingstr
    idc = idcname
    idcip = dip
    packsz = psize
    result = os.popen(pingstr).readlines()
    cur_time=Getime()
    result2=str(result[-1].strip())
    if not result2.endswith('loss'):
        totalloss=result[-2].split(",")[2].split('%')[0]
        result3=result[-1].split("=")[1].split('/')
        ToLog(idc,idcip,cur_time,packsz,result3[0],result3[1],result3[2],totalloss)
    else:
        cur_time=Getime()
        ToLog(idc,idcip,cur_time,packsz,'0','0','0','100')
def main():
    threads = []
    ipmn=OpenFile()
    ip=ipmn[0]
    idcname=ipmn[1]
    nloops = range(len(ip))

    for i in nloops:
        for psize in size:
            t = MyThread(Ping,(psize,ip[i],idcname[i]))
            threads.append(t)

    threadnum=range(len(threads))
    for i in threadnum:
        threads[i].start()

    for i in threadnum:
        threads[i].join()


if __name__ == '__main__':

    main()



本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/231835,如需转载请自行联系原作者

目录
打赏
0
0
0
0
69
分享
相关文章
高并发 多线程批量ping工具 nbping简介和使用
nbping是为解决局域网大批量IP实例或主机探活,采用go协程并发处理,可以自定义并发的协程数量和输出结果.效率远高于现有的批量ping工具.
2759 0
|
3月前
|
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
278 20
如何使用 Ping 命令监测网络丢包情况?
如何使用 Ping 命令监测网络丢包情况?
2307 48
如何设置 Ping 命令的超时时间?
如何设置 Ping 命令的超时时间?
560 2
别再只会使用简单的 ping 命令了,Linux 中这些高级 ping 命令可以提高工作效率!
在 Linux 系统中,ping 命令不仅用于检测网络连通性和延迟,还拥有多种高级选项和技巧,如定制数据包大小、获取详细统计信息、持续 ping、指定源地址和多目标 ping。本文详细介绍这些高级命令及其在性能测试、故障排查和网络监控中的实际应用,帮助你提升网络管理效率。
361 3
高级 ping 命令及技巧
Ping命令是一种常用的网络诊断工具,用于测试网络连接的可达性和延迟等信息
315 1
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
324 3
手把手教你从零开始构建并训练你的第一个强化学习智能体:深入浅出Agent项目实战,带你体验编程与AI结合的乐趣
【10月更文挑战第1天】本文通过构建一个简单的强化学习环境,演示了如何创建和训练智能体以完成特定任务。我们使用Python、OpenAI Gym和PyTorch搭建了一个基础的智能体,使其学会在CartPole-v1环境中保持杆子不倒。文中详细介绍了环境设置、神经网络构建及训练过程。此实战案例有助于理解智能体的工作原理及基本训练方法,为更复杂应用奠定基础。首先需安装必要库: ```bash pip install gym torch ``` 接着定义环境并与之交互,实现智能体的训练。通过多个回合的试错学习,智能体逐步优化其策略。这一过程虽从基础做起,但为后续研究提供了良好起点。
534 4
手把手教你从零开始构建并训练你的第一个强化学习智能体:深入浅出Agent项目实战,带你体验编程与AI结合的乐趣
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等