Advertisement
Egger0

ping

Jul 8th, 2023 (edited)
660
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.83 KB | None | 0 0
  1. import os
  2. import platform
  3. import subprocess
  4. import time
  5. import datetime
  6.  
  7. IP_PARA_LOG = "1.1.1.1"
  8.  
  9. print_in_terminal = True
  10. log_text = False
  11.  
  12. def ping(host):
  13.     if platform.system().lower() == "windows":
  14.         ping_cmd = f"ping -n 1 {host}"
  15.     else:
  16.         ping_cmd = f"ping -w 3 -c 1 {host}"
  17.  
  18.     output = subprocess.getoutput(ping_cmd)
  19.  
  20.     if "unreachable" in output or "100% packet loss" in output:
  21.         return False
  22.     else:
  23.         return True
  24.  
  25.  
  26. def calcular_uptime(t_init, t_end):
  27.     if (t_init == 0):
  28.         return datetime.timedelta(hours = (t_end.hour - 3), minutes=t_end.minute, seconds=t_end.second)
  29.     elif t_end == 0:
  30.         return datetime.timedelta(hours = (t_init.hour - 3), minutes=t_init.minute, seconds=t_init.second)
  31.     time_init = datetime.timedelta(hours = t_init.hour, minutes=t_init.minute, seconds=t_init.second)
  32.     time_end = datetime.timedelta(hours = t_end.hour, minutes=t_end.minute, seconds=t_end.second)
  33.     return (time_end - time_init)
  34.  
  35. def formatar_timedelta(timedelta):
  36.     horas = timedelta.seconds // 3600
  37.     minutos = (timedelta.seconds // 60) % 60
  38.     segundos = timedelta.seconds % 60
  39.  
  40.     return f"{horas:02d}h {minutos:02d}min {segundos:02d}s"
  41.  
  42. def main():
  43.     init_time = datetime.datetime.now()
  44.     init_down = 0
  45.  
  46.     start_msg = f"Monitoramento ativo desde o dia {datetime.date.today().strftime('%d/%m/%Y')}"
  47.     logname = f"{datetime.date.today()}_{time.time()}_uptime.txt"
  48.  
  49.     print(f"\x1b[0;34;40m{start_msg}\x1b[0m")
  50.     while True:
  51.         if ping(IP_PARA_LOG):
  52.             con_restart = f"Conexão com a internet foi Restaurada {formatar_timedelta(calcular_uptime(datetime.datetime.now(), 0))}"
  53.  
  54.             uptime = formatar_timedelta(calcular_uptime(init_time, datetime.datetime.now()))
  55.             logmessage = f"Conexão com a internet está ativa por {uptime}"
  56.            
  57.             if init_down != 0:
  58.                 print(f"\x1b[0;33m{con_restart}\x1b[0m")
  59.                 subprocess.getoutput(f"echo '{con_restart}' >> {logname}")
  60.            
  61.             if print_in_terminal:
  62.                 subprocess.getoutput(f"echo '{logmessage}' >> {logname}")
  63.                 print(f"\x1b[32;40m{logmessage}\x1b[0m", end="\r", flush=True)
  64.             init_down = 0
  65.         else:
  66.             if init_down == 0:
  67.                 print()
  68.                 init_down = datetime.datetime.now()
  69.                 con_down = f"Conexão com a internet está off-line {formatar_timedelta(calcular_uptime(datetime.datetime.now(), 0))}"
  70.                 print(f"\x1b[0;31;40m{con_down}\x1b[0m")
  71.                 subprocess.getoutput(f"echo '{con_down}' >> {logname}")
  72.             if print_in_terminal:
  73.                 print("", end="\r", flush=True)
  74.             init_time = datetime.datetime.now()
  75.  
  76.         time.sleep(5)
  77.  
  78. main()
  79.  
  80. if __name__ == "__main__":
  81.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement