Este código está disponible en # Comparte Código. Ver sin formato

  1. #!/usr/bin/python3
  2.  
  3. # python_ping.py - Hace ping a ciertos elementos de la red.
  4. # ---------------------------------------------------------
  5. # Este programa es software libre. Puede redistribuirlo y/o
  6. # modificarlo bajo los términos de la Licencia Pública General
  7. # de GNU según es publicada por la Free Software Foundation,
  8. # bien de la versión 2 de dicha Licencia o bien (según su
  9. # elección) de cualquier versión posterior.
  10. #
  11. # Este programa se distribuye con la esperanza de que sea
  12. # útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía
  13. # MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN
  14. # PROPÓSITO PARTICULAR. Para más detalles, véase la Licencia
  15. # Pública General de GNU.
  16. #
  17. # Autor: LinuxmanR4 http://linuxmanr4.com
  18. # versión 1.0
  19. #
  20.  
  21. import os
  22. import csv
  23. from colorama import Fore
  24. import time
  25. import datetime
  26.  
  27.  
  28. def check_ping(hostname):
  29.     response = os.system("fping -r 10 -q " + hostname + " >/dev/null")
  30.     if response == 0:
  31.         check_ping = "[OK]"
  32.     else:
  33.         check_ping = "[Error]"
  34.  
  35.     return check_ping
  36.  
  37.  
  38. def sonido_alerta():
  39.     os.system("play -q ent_communicator1.mp3")
  40.  
  41. # Lee los datos del archivo y los guarda en una variable.
  42. archivo_servidores = open('servidores.csv')
  43. servidores_reader = csv.reader(archivo_servidores)
  44. datos_servidores = list(servidores_reader)
  45.  
  46. # Prueba si hay conexión en todos los servidores
  47. contador = 0
  48.  
  49. while True:
  50.     for i in range(len(datos_servidores)):
  51.         servidorTexto = datos_servidores[i][0]
  52.         servidorIP = datos_servidores[i][1]
  53.         resultado = check_ping(datos_servidores[i][1])
  54.  
  55.         if resultado == "[Error]":
  56.             print("{0:30} {1:17} {2:7}".format(
  57.                 Fore.WHITE + servidorTexto, servidorIP, Fore.RED + resultado))
  58.             sonido_alerta()
  59.         else:
  60.             print("{0:30} {1:17} {2:7}".format(
  61.                 Fore.WHITE + servidorTexto, servidorIP, Fore.GREEN + resultado))
  62.  
  63.     contador += 1
  64.     print(Fore.BLUE)
  65.     print('{0} {1:%H:%M:%S} {2}'.format(contador, datetime.datetime.now(),
  66.                                     "________________________________________"))
  67.     print()
  68.  
  69.     # Pausa de 10 minutos.
  70.     time.sleep(600)