Backup automatico script del 2026-01-25 07:00
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import argparse
|
||||
import datetime
|
||||
import subprocess
|
||||
import re
|
||||
import os
|
||||
@@ -21,6 +22,16 @@ LIMIT_JITTER = 30.0 # ms di deviazione (sopra 30ms lagga la voce/gioco)
|
||||
|
||||
# File di stato
|
||||
STATE_FILE = "/home/daniely/docker/telegram-bot/quality_state.json"
|
||||
LOG_FILE = "/home/daniely/docker/telegram-bot/quality_log.txt"
|
||||
|
||||
|
||||
def log_line(message: str) -> None:
|
||||
ts = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
try:
|
||||
with open(LOG_FILE, "a", encoding="utf-8") as f:
|
||||
f.write(f"{ts} {message}\n")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def send_telegram(msg, chat_ids: Optional[List[str]] = None):
|
||||
"""
|
||||
@@ -55,6 +66,7 @@ def save_state(active):
|
||||
|
||||
def measure_quality(chat_ids: Optional[List[str]] = None):
|
||||
print("--- Avvio Test Qualità Linea ---")
|
||||
log_line("INFO Avvio Test Qualità Linea")
|
||||
|
||||
# Esegue 50 ping rapidi (0.2s intervallo)
|
||||
# -q: quiet (solo riepilogo finale)
|
||||
@@ -89,7 +101,9 @@ def measure_quality(chat_ids: Optional[List[str]] = None):
|
||||
else:
|
||||
avg_ping = 0.0
|
||||
|
||||
print(f"Risultati: Loss={loss}% | Jitter={jitter}ms | AvgPing={avg_ping}ms")
|
||||
result_line = f"Risultati: Loss={loss}% | Jitter={jitter}ms | AvgPing={avg_ping}ms"
|
||||
print(result_line)
|
||||
log_line(f"INFO {result_line}")
|
||||
|
||||
# --- LOGICA ALLARME ---
|
||||
state = load_state()
|
||||
@@ -110,8 +124,10 @@ def measure_quality(chat_ids: Optional[List[str]] = None):
|
||||
send_telegram(msg, chat_ids=chat_ids)
|
||||
save_state(True)
|
||||
print("Allarme inviato.")
|
||||
log_line("WARN Allarme inviato")
|
||||
else:
|
||||
print("Qualità ancora scarsa (già notificato).")
|
||||
log_line("WARN Qualità ancora scarsa (già notificato)")
|
||||
|
||||
elif was_active and not is_bad:
|
||||
# RECOVERY
|
||||
@@ -121,8 +137,10 @@ def measure_quality(chat_ids: Optional[List[str]] = None):
|
||||
send_telegram(msg, chat_ids=chat_ids)
|
||||
save_state(False)
|
||||
print("Recovery inviata.")
|
||||
log_line("INFO Recovery inviata")
|
||||
else:
|
||||
print("Linea OK.")
|
||||
log_line("INFO Linea OK")
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Network quality monitor")
|
||||
|
||||
Reference in New Issue
Block a user