Initial commit: Debian Manager — управление Debian-серверами

- SSH/SFTP управление без агентов
- Пакеты (apt), Docker, файлы, systemd, ufw, cron
- Плейбуки, групповые операции, планировщик
- Бэкапы, отчёты, Portainer, Proxmox VE, Gitea Deploy
- Терминал, Telegram-уведомления, тёмная/светлая тема
This commit is contained in:
dinlo
2026-09-05 19:46:45 +08:00
commit f624fee5e0
65 changed files with 6981 additions and 0 deletions
+12
View File
@@ -0,0 +1,12 @@
import asyncio
import asyncssh
async def main():
async with asyncssh.connect(
"132.243.17.164", port=2292, username="dimon",
password="123456789987654321", known_hosts=None,
) as conn:
r = await conn.run("echo '123456789987654321' | sudo -S docker ps 2>&1; echo '==='; echo '123456789987654321' | sudo -S docker version --format '{{.Server.Version}}' 2>/dev/null; echo '==='; echo '123456789987654321' | sudo -S docker images 2>&1")
print(r.stdout)
asyncio.run(main())
+22
View File
@@ -0,0 +1,22 @@
import asyncio
import asyncssh
async def main():
async with asyncssh.connect(
"132.243.17.164", port=2292, username="dimon",
password="123456789987654321", known_hosts=None,
) as conn:
# CPU: два замера /proc/stat с паузой 1 сек
r = await conn.run("grep '^cpu ' /proc/stat; sleep 1; grep '^cpu ' /proc/stat")
print("CPU lines:")
print(r.stdout)
# RAM
r = await conn.run("free -m")
print("FREE:")
print(r.stdout)
# DISK
r = await conn.run("df -m /")
print("DF:")
print(r.stdout)
asyncio.run(main())
+12
View File
@@ -0,0 +1,12 @@
import asyncio
import asyncssh
async def main():
async with asyncssh.connect(
"132.243.17.164", port=2292, username="dimon",
password="123456789987654321", known_hosts=None,
) as conn:
r = await conn.run("echo '123456789987654321' | sudo -S apt-get update -qq 2>&1; apt-cache search docker-compose 2>/dev/null | head -5; echo '==='; apt-cache policy docker.io 2>/dev/null | head -4")
print(r.stdout)
asyncio.run(main())
+14
View File
@@ -0,0 +1,14 @@
import asyncio
import asyncssh
async def main():
async with asyncssh.connect(
"132.243.17.164", port=2292, username="dimon",
password="123456789987654321", known_hosts=None,
) as conn:
r = await conn.run("echo '123456789987654321' | sudo -S id 2>/dev/null")
print("sudo id:", r.stdout.strip(), "rc:", r.returncode)
r = await conn.run("which docker; docker --version 2>/dev/null; echo '---'; nproc; free -m | head -2; df -h / | tail -1")
print(r.stdout)
asyncio.run(main())
+38
View File
@@ -0,0 +1,38 @@
import asyncio
import asyncssh
SCRIPT = r"""
set -e
echo '=== apt update ==='
echo '123456789987654321' | sudo -S apt-get update -qq
echo '=== install docker.io ==='
echo '123456789987654321' | sudo -S DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker.io docker-compose >/dev/null
echo '=== enable docker ==='
echo '123456789987654321' | sudo -S systemctl enable --now docker
echo '123456789987654321' | sudo -S usermod -aG docker dimon
echo '=== docker version ==='
echo '123456789987654321' | sudo -S docker --version
echo '=== portainer volume ==='
echo '123456789987654321' | sudo -S docker volume create portainer_data
echo '=== portainer run ==='
echo '123456789987654321' | sudo -S docker run -d -p 9000:9000 --name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:lts
echo '=== containers ==='
echo '123456789987654321' | sudo -S docker ps
echo '=== ufw allow 9000 ==='
(echo '123456789987654321' | sudo -S ufw allow 9000/tcp 2>/dev/null && echo ufw-ok) || echo ufw-not-installed
echo DONE
"""
async def main():
async with asyncssh.connect(
"132.243.17.164", port=2292, username="dimon",
password="123456789987654321", known_hosts=None,
) as conn:
r = await conn.run(SCRIPT, timeout=900)
print(r.stdout)
if r.stderr:
print("STDERR:", r.stderr[-3000:])
print("RC:", r.returncode)
asyncio.run(main())
+20
View File
@@ -0,0 +1,20 @@
import asyncio
import asyncssh
import sys
sys.path.insert(0, r"C:/Users/dimir/proects/debian-manager")
async def main():
from app.core.ssh import SSHClient
from app.core.monitor import _METRICS_CMD
from app.db.models import Server
srv = Server(id=1, name="t", host="132.243.17.164", port=2292,
username="dimon", password="123456789987654321")
async with SSHClient(srv) as c:
r = await c.run(_METRICS_CMD, timeout=30)
print("STDOUT:")
print(r.stdout)
if r.stderr:
print("STDERR:", r.stderr[:500])
asyncio.run(main())