Skip to content

Latest commit

 

History

History
46 lines (38 loc) · 2.83 KB

README.md

File metadata and controls

46 lines (38 loc) · 2.83 KB

toolkit — biblioteca modular de infra/devops

Ferramentas reutilizáveis, modulares e sanitizadas (nenhum segredo no código — tudo por parâmetro ou variável de ambiente). Importe só o módulo que precisar; combine-os nas integrações.

Módulos

Módulo O que faz Deps
proc run() (captura), stream() (linha a linha ao vivo), stream_sse() (formato Server-Sent Events) stdlib
ssh classe SSH (context manager): run, put, get, get_resilient (resume/retry); + run_on_hosts() paramiko
mysql_db classe MySQL: query, exists, execute — sempre parametrizado (anti SQL injection) mysql-connector / PyMySQL
docker_fleet containers, container_ips, ip_range, exec_in, control, fleet_exec binário docker
netcheck ping, port_open, http_ok stdlib (+requests opcional)
watchdog is_running, watch (religa serviço caído), prune_old_files (limpa por idade, c/ dirs ignorados) stdlib
config load_ini, env(required=), mask (mascara segredo p/ log) stdlib
crypto hash_senha/conferir_senha (bcrypt), gerar_senha (forte + md5 legado), read_keepass bcrypt / pykeepass
archive zip_file, zip_dir, unzip, md5_file, recombine_parts (junta partes do split validando MD5) stdlib
logutil escrever_log, FileLogger (log em arquivo com timestamp) stdlib
github_backup backup_repo (clona repo de org/user + zip; token por parâmetro/ENV) git (+PyGithub opcional)
pfsense PFSenseBackup, backup_config (exporta a config XML do pfSense via webGUI) beautifulsoup4

Os 4 últimos (archive/logutil/github_backup/pfsense) + get_resilient/recombine_parts/ prune_old_files/read_keepass vieram do bkp_api "DataVault" (sistema de backup da JM), generalizados e sanitizados.

Exemplos de integração (../examples/)

  • sse_script_panel.py — painel web Flask que roda scripts e mostra a saída ao vivo (SSE), com allowlist e login por env. (versão sanitizada do "DOCKER_UPDATE")
  • fleet_update.py — atualização orquestrada de uma frota via docker_fleet + ssh.
  • uptime_monitor.py — monitor de uptime de endpoints via netcheck.

Uso

from toolkit.proc import stream            # leve, sem deps
from toolkit import ssh, mysql_db, docker_fleet   # estes têm deps externas

with ssh.SSH("10.0.0.5", user="root", key_filename="~/.ssh/id_ed25519") as s:
    print(s.run("uptime"))

Instalar deps conforme o uso: pip install -r ../requirements.txt.

Princípios

  1. Zero segredo no código — parâmetro ou env (SSH_PASSWORD, MYSQL_PASSWORD, …).
  2. Módulos independentes — dá pra usar um sem arrastar os outros.
  3. Queries parametrizadas, docker exec em vez de SSH-no-container, chave SSH > senha.