Python多线程ping检测机器存活(跨平台版)

简介:

由于日常工作经常要回收开发商用完的服务器,之前是用nmap检测开发商有没有关机的,感觉挺麻烦的,今天拿python写了一个脚本专门对付回收服务器的:

原理:把准备回收的机器写入hosts.txt文件里,python脚本读取hosts.txt文件的内容,匹配出里面的ip,然后通过ping测试服务器是否没关机

 
  1. #!/usr/bin/env python 
  2.  
  3. from threading import Thread 
  4. import subprocess 
  5. from Queue import Queue 
  6. import re 
  7. import sys 
  8. import platform 
  9.  
  10. num_threads = 10 
  11. queue = Queue() 
  12.  
  13. def pinger(i,q): 
  14.     while True
  15.         ip = q.get() 
  16.         if platform.system() == "Linux"
  17.             cmd = "ping -c 1 %s" % ip 
  18.             outfile = "/dev/null" 
  19.         elif platform.system() == "Windows"
  20.             cmd = "ping -n 1 %s" % ip 
  21.             outfile = "ping.temp" 
  22.         ret = subprocess.call(cmd, shell=True, stdout=open(outfile,'w'), stderr=subprocess.STDOUT) 
  23.         if ret == 0
  24.             print "%s: is alive" % ip 
  25.         else
  26.             print "%s is down" % ip 
  27.         q.task_done() 
  28.  
  29. for i in range(num_threads): 
  30.     worker = Thread(target=pinger, args=(i, queue)) 
  31.     worker.setDaemon(True
  32.     worker.start() 
  33.      
  34.  
  35. host_file = open(r'hosts.txt','r'
  36. ips = [] 
  37. re_obj = re.compile(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
  38. for line in host_file: 
  39.     for match in re_obj.findall(line): 
  40.         ips.append(match) 
  41. host_file.close() 
  42.  
  43.  
  44. for ip in ips: 
  45.     queue.put(ip) 
  46.      
  47. print "Main Thread Waiting" 
  48. queue.join() 
  49. print "Done" 
  50.  
  51. result = raw_input("Please press any key to exit"
  52. if result: 
  53.     sys.exit(0

小弟初学,请大家多多指点!

本文转自运维笔记博客51CTO博客,原文链接http://blog.51cto.com/lihuipeng/924974如需转载请自行联系原作者


lihuipeng

相关文章
|
15天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
25天前
|
算法 数据处理 Python
Python并发编程:解密异步IO与多线程
本文将深入探讨Python中的并发编程技术,重点介绍异步IO和多线程两种常见的并发模型。通过对比它们的特点、适用场景和实现方式,帮助读者更好地理解并发编程的核心概念,并掌握在不同场景下选择合适的并发模型的方法。
|
1天前
|
监控 Shell
生产环境Shell脚本Ping监控主机是否存活(多种方法)
生产环境Shell脚本Ping监控主机是否存活(多种方法)
|
2天前
|
Java 数据库连接 数据处理
Python从入门到精通:3.1.2多线程与多进程编程
Python从入门到精通:3.1.2多线程与多进程编程
|
2天前
|
监控 Python
Python监控主机是否存活,并发报警邮件
Python监控主机是否存活,并发报警邮件
|
7天前
|
数据采集 存储 安全
python检测代理ip是否可用的方法
python检测代理ip是否可用的方法
|
8天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
28 0
|
23天前
|
数据采集 Java API
python并发编程: Python使用线程池在Web服务中实现加速
python并发编程: Python使用线程池在Web服务中实现加速
18 3
python并发编程: Python使用线程池在Web服务中实现加速
|
26天前
|
Java 测试技术 Python
Python开启线程和线程池的方法
Python开启线程和线程池的方法
17 0
Python开启线程和线程池的方法
|
1月前
|
并行计算 Python
Python中的并发编程:多线程与多进程的比较
在Python编程中,实现并发操作是提升程序性能的重要手段之一。本文将探讨Python中的多线程与多进程两种并发编程方式的优劣及适用场景,帮助读者更好地选择合适的方法来提高程序运行效率。

热门文章

最新文章