Backup automatico script del 2026-02-01 07:00
This commit is contained in:
@@ -11,7 +11,7 @@ from typing import List, Optional
|
||||
|
||||
# --- CONFIGURAZIONE ---
|
||||
BOT_TOKEN="8155587974:AAF9OekvBpixtk8ZH6KoIc0L8edbhdXt7A4"
|
||||
TELEGRAM_CHAT_IDS = ["64463169", "24827341", "132455422", "5405962012"]
|
||||
TELEGRAM_CHAT_IDS = ["64463169"]
|
||||
|
||||
# BERSAGLIO (Cloudflare è solitamente il più stabile per i ping)
|
||||
TARGET_HOST = "1.1.1.1"
|
||||
@@ -86,8 +86,20 @@ def measure_quality(chat_ids: Optional[List[str]] = None):
|
||||
|
||||
# Parsing Packet Loss
|
||||
# Cerca pattern: "X% packet loss"
|
||||
loss_match = re.search(r'(\d+)% packet loss', output)
|
||||
loss = int(loss_match.group(1)) if loss_match else 100
|
||||
loss_match = re.search(r'([0-9]+(?:[\\.,][0-9]+)?)% packet loss', output)
|
||||
if loss_match:
|
||||
loss_raw = loss_match.group(1).replace(",", ".")
|
||||
try:
|
||||
loss = float(loss_raw)
|
||||
except Exception:
|
||||
loss = 100.0
|
||||
else:
|
||||
loss = 100.0
|
||||
# Clamp to avoid parsing artifacts (e.g., "0.96078%" -> 0.96078, not 96078).
|
||||
if loss < 0:
|
||||
loss = 0.0
|
||||
if loss > 100:
|
||||
loss = 100.0
|
||||
|
||||
# Parsing Jitter (mdev)
|
||||
# Output tipico: rtt min/avg/max/mdev = 10.1/12.5/40.2/5.1 ms
|
||||
@@ -101,7 +113,7 @@ def measure_quality(chat_ids: Optional[List[str]] = None):
|
||||
else:
|
||||
avg_ping = 0.0
|
||||
|
||||
result_line = f"Risultati: Loss={loss}% | Jitter={jitter}ms | AvgPing={avg_ping}ms"
|
||||
result_line = f"Risultati: Loss={loss:.2f}% | Jitter={jitter}ms | AvgPing={avg_ping}ms"
|
||||
print(result_line)
|
||||
log_line(f"INFO {result_line}")
|
||||
|
||||
@@ -116,7 +128,7 @@ def measure_quality(chat_ids: Optional[List[str]] = None):
|
||||
# NUOVO ALLARME
|
||||
msg = f"📉 **DEGRADO QUALITÀ LINEA**\n\n"
|
||||
if loss >= LIMIT_LOSS:
|
||||
msg += f"🔴 **Packet Loss:** `{loss}%` (Soglia {LIMIT_LOSS}%)\n"
|
||||
msg += f"🔴 **Packet Loss:** `{loss:.2f}%` (Soglia {LIMIT_LOSS}%)\n"
|
||||
if jitter >= LIMIT_JITTER:
|
||||
msg += f"⚠️ **Jitter (Instabilità):** `{jitter}ms` (Soglia {LIMIT_JITTER}ms)\n"
|
||||
|
||||
@@ -133,7 +145,7 @@ def measure_quality(chat_ids: Optional[List[str]] = None):
|
||||
# RECOVERY
|
||||
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}%`"
|
||||
msg += f"Ping: `{avg_ping}ms` | Jitter: `{jitter}ms` | Loss: `{loss:.2f}%`"
|
||||
send_telegram(msg, chat_ids=chat_ids)
|
||||
save_state(False)
|
||||
print("Recovery inviata.")
|
||||
|
||||
Reference in New Issue
Block a user