Backup automatico script del 2026-01-11 07:00
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import argparse
|
||||
import subprocess
|
||||
import re
|
||||
import os
|
||||
@@ -5,10 +6,11 @@ import json
|
||||
import time
|
||||
import urllib.request
|
||||
import urllib.parse
|
||||
from typing import List, Optional
|
||||
|
||||
# --- CONFIGURAZIONE ---
|
||||
BOT_TOKEN="8155587974:AAF9OekvBpixtk8ZH6KoIc0L8edbhdXt7A4"
|
||||
CHAT_ID="64463169"
|
||||
TELEGRAM_CHAT_IDS = ["64463169", "24827341", "132455422", "5405962012"]
|
||||
|
||||
# BERSAGLIO (Cloudflare è solitamente il più stabile per i ping)
|
||||
TARGET_HOST = "1.1.1.1"
|
||||
@@ -20,10 +22,17 @@ 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"
|
||||
|
||||
def send_telegram(msg):
|
||||
if "INSERISCI" in TELEGRAM_BOT_TOKEN: return
|
||||
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
|
||||
for chat_id in TELEGRAM_CHAT_IDS:
|
||||
def send_telegram(msg, chat_ids: Optional[List[str]] = None):
|
||||
"""
|
||||
Args:
|
||||
msg: Messaggio da inviare
|
||||
chat_ids: Lista di chat IDs (default: TELEGRAM_CHAT_IDS)
|
||||
"""
|
||||
if not BOT_TOKEN or "INSERISCI" in BOT_TOKEN: return
|
||||
if chat_ids is None:
|
||||
chat_ids = TELEGRAM_CHAT_IDS
|
||||
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
|
||||
for chat_id in chat_ids:
|
||||
try:
|
||||
payload = {"chat_id": chat_id, "text": msg, "parse_mode": "Markdown"}
|
||||
data = urllib.parse.urlencode(payload).encode('utf-8')
|
||||
@@ -44,7 +53,7 @@ def save_state(active):
|
||||
with open(STATE_FILE, 'w') as f: json.dump({"alert_active": active}, f)
|
||||
except: pass
|
||||
|
||||
def measure_quality():
|
||||
def measure_quality(chat_ids: Optional[List[str]] = None):
|
||||
print("--- Avvio Test Qualità Linea ---")
|
||||
|
||||
# Esegue 50 ping rapidi (0.2s intervallo)
|
||||
@@ -98,7 +107,7 @@ def measure_quality():
|
||||
msg += f"⚠️ **Jitter (Instabilità):** `{jitter}ms` (Soglia {LIMIT_JITTER}ms)\n"
|
||||
|
||||
msg += f"\n_Ping Medio: {avg_ping}ms_"
|
||||
send_telegram(msg)
|
||||
send_telegram(msg, chat_ids=chat_ids)
|
||||
save_state(True)
|
||||
print("Allarme inviato.")
|
||||
else:
|
||||
@@ -109,11 +118,18 @@ def measure_quality():
|
||||
msg = f"✅ **QUALITÀ LINEA RIPRISTINATA**\n\n"
|
||||
msg += f"I parametri sono rientrati nella norma.\n"
|
||||
msg += f"Ping: `{avg_ping}ms` | Jitter: `{jitter}ms` | Loss: `{loss}%`"
|
||||
send_telegram(msg)
|
||||
send_telegram(msg, chat_ids=chat_ids)
|
||||
save_state(False)
|
||||
print("Recovery inviata.")
|
||||
else:
|
||||
print("Linea OK.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
measure_quality()
|
||||
parser = argparse.ArgumentParser(description="Network quality monitor")
|
||||
parser.add_argument("--debug", action="store_true", help="Invia messaggi solo all'admin (chat ID: %s)" % TELEGRAM_CHAT_IDS[0])
|
||||
args = parser.parse_args()
|
||||
|
||||
# In modalità debug, invia solo al primo chat ID (admin)
|
||||
chat_ids = [TELEGRAM_CHAT_IDS[0]] if args.debug else None
|
||||
|
||||
measure_quality(chat_ids=chat_ids)
|
||||
|
||||
Reference in New Issue
Block a user