Initial commit: Debian Manager — управление Debian-серверами
- SSH/SFTP управление без агентов - Пакеты (apt), Docker, файлы, systemd, ufw, cron - Плейбуки, групповые операции, планировщик - Бэкапы, отчёты, Portainer, Proxmox VE, Gitea Deploy - Терминал, Telegram-уведомления, тёмная/светлая тема
This commit is contained in:
@@ -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())
|
||||
@@ -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())
|
||||
@@ -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())
|
||||
@@ -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())
|
||||
@@ -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())
|
||||
@@ -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())
|
||||
Reference in New Issue
Block a user