Python多线程ping检测机器存活(windows版)-阿里云开发者社区

开发者社区> 开发与运维> 正文

Python多线程ping检测机器存活(windows版)

简介:

由于日常工作经常要回收开发商用完的服务器,之前是用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.  
  9. num_threads = 10 
  10. queue = Queue() 
  11.  
  12. def pinger(i,q): 
  13.     while True
  14.         ip = q.get() 
  15.         ret = subprocess.call("ping -n 1 %s" % ip, shell=True, stdout=open(r'ping.temp','w'), stderr=subprocess.STDOUT) 
  16.         if ret == 0
  17.             print "%s: is alive" % ip 
  18.         else
  19.             print "%s is down" % ip 
  20.         q.task_done() 
  21.  
  22. for i in range(num_threads): 
  23.     worker = Thread(target=pinger, args=(i, queue)) 
  24.     worker.setDaemon(True
  25.     worker.start() 
  26.      
  27.  
  28. host_file = open(r'hosts.txt','r'
  29. ips = [] 
  30. re_obj = re.compile(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
  31. for line in host_file: 
  32.     for match in re_obj.findall(line): 
  33.         ips.append(match) 
  34. host_file.close() 
  35.  
  36.  
  37. for ip in ips: 
  38.     queue.put(ip) 
  39.      
  40. print "Main Thread Waiting" 
  41. queue.join() 
  42. print "Done" 
  43.  
  44. result = raw_input("Please press any key to exit"
  45. if result: 
  46.     sys.exit(0

效果图如下:

适合自己的需求,高手就路过吧~

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


lihuipeng

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章