docs: split old Notes into 09.3.N, fix 00 (news bot), move check scripts to scripts/checks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
38
scripts/checks/check_conf.py
Normal file
38
scripts/checks/check_conf.py
Normal file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Ищем склеенные строки в конфигах awg на всех серверах панели.
|
||||
|
||||
Имена переменных в пробе латиницей: sh внутри контейнеров кириллицу не берёт.
|
||||
"""
|
||||
import json, sys
|
||||
sys.path.insert(0, "/app")
|
||||
from managers.ssh_manager import SSHManager
|
||||
|
||||
ПРОБА = (
|
||||
"for c in amnezia-awg2 amnezia-awg amnezia-awg31 amnezia-awg3 amnezia-awg-legacy; do "
|
||||
" docker ps --format '{{.Names}}' 2>/dev/null | grep -qx $c || continue; "
|
||||
" for f in awg0.conf wg0.conf; do "
|
||||
" p=/opt/amnezia/awg/$f; "
|
||||
" docker exec $c test -f $p 2>/dev/null || continue; "
|
||||
" glue=$(docker exec $c grep -c '/32\\[Peer\\]' $p 2>/dev/null || echo 0); "
|
||||
" endnl=$(docker exec $c sh -c \"tail -c 1 $p | od -An -c | tr -d ' '\" 2>/dev/null); "
|
||||
" peers=$(docker exec $c grep -c '^\\[Peer\\]' $p 2>/dev/null || echo 0); "
|
||||
" echo \"$c/$f peers=$peers glue=$glue end=$endnl\"; "
|
||||
" done; done"
|
||||
)
|
||||
|
||||
d = json.load(open("/app/data/data.json"))
|
||||
for s in d["servers"]:
|
||||
try:
|
||||
with SSHManager(s["host"], s.get("ssh_port", 22), s["username"],
|
||||
password=s.get("password") or None,
|
||||
private_key=s.get("private_key") or None,
|
||||
connect_timeout=8) as ssh:
|
||||
out, err, _ = ssh.run_command(ПРОБА, timeout=40)
|
||||
for строка in (out or err).splitlines():
|
||||
строка = строка.strip()
|
||||
if not строка:
|
||||
continue
|
||||
плохо = ("glue=0" not in строка) or ("end=\\n" not in строка)
|
||||
print("%s %-26s %s" % (" !!" if плохо else " ", s["name"][:26], строка))
|
||||
except Exception as e:
|
||||
print(" %-26s СБОЙ: %s" % (s["name"][:26], str(e)[:50]))
|
||||
Reference in New Issue
Block a user