[A04.P005] Actualizados hitos terminados de la Fase 8, y scripts del orquestador

This commit is contained in:
Ricardo Monla
2026-04-11 14:16:54 -03:00
parent fcd8754e90
commit fe3dcec7e9
7 changed files with 59 additions and 7 deletions
+5
View File
@@ -50,3 +50,8 @@ tools/w-zombi/payloads/runSysDasuten.zip
.yarn/build-state.yml .yarn/build-state.yml
.yarn/install-state.gz .yarn/install-state.gz
.yarn/berry.cjs .yarn/berry.cjs
# Bóveda ADN
adn/tools/candados/.boveda.json
adn/tools/candados/.session
+3 -1
View File
@@ -15,5 +15,7 @@
"srvv-nginx-rm:rmonla": "eyJpdiI6ImFsQnk5UjhLaDFYWHJsWnciLCJ0YWciOiJJaEtCS215ekkwYVdFR0ZHNzFVN0VBPT0iLCJkYXRhIjoiUkcvSS9sMjhoQnFpRmZobFZBPT0ifQ==", "srvv-nginx-rm:rmonla": "eyJpdiI6ImFsQnk5UjhLaDFYWHJsWnciLCJ0YWciOiJJaEtCS215ekkwYVdFR0ZHNzFVN0VBPT0iLCJkYXRhIjoiUkcvSS9sMjhoQnFpRmZobFZBPT0ifQ==",
"srv-xen01:rmonla": "eyJpdiI6ImdURFJuRDNucGpETkxVVjAiLCJ0YWciOiJWdnNzdmRxRGthS0RnUTBWeE1xYUpRPT0iLCJkYXRhIjoiaGszT2lYRkNONVVWakFhQjdnPT0ifQ==", "srv-xen01:rmonla": "eyJpdiI6ImdURFJuRDNucGpETkxVVjAiLCJ0YWciOiJWdnNzdmRxRGthS0RnUTBWeE1xYUpRPT0iLCJkYXRhIjoiaGszT2lYRkNONVVWakFhQjdnPT0ifQ==",
"dasu-sql4:Administrador": "eyJpdiI6ImQzc09sRmo2NEZBbHZmN2IiLCJ0YWciOiJxK3Z3RU9uZG1QMXNUV1hJbEFmV3d3PT0iLCJkYXRhIjoicXd5dDI4bHBkeFNhRk1yTzluczlxdz09In0=", "dasu-sql4:Administrador": "eyJpdiI6ImQzc09sRmo2NEZBbHZmN2IiLCJ0YWciOiJxK3Z3RU9uZG1QMXNUV1hJbEFmV3d3PT0iLCJkYXRhIjoicXd5dDI4bHBkeFNhRk1yTzluczlxdz09In0=",
"dasu-sql4:sa": "eyJpdiI6Ik43aWR5d2RacFVFR3pyNysiLCJ0YWciOiJxeVAyTmxtYXloNTdFTVlvMFphQ2hRPT0iLCJkYXRhIjoiT0lrR1FGMXRVZ0czYU5PK1ZFcG8wUT09In0=" "dasu-sql4:sa": "eyJpdiI6Ik43aWR5d2RacFVFR3pyNysiLCJ0YWciOiJxeVAyTmxtYXloNTdFTVlvMFphQ2hRPT0iLCJkYXRhIjoiT0lrR1FGMXRVZ0czYU5PK1ZFcG8wUT09In0=",
"dasu-pcv:rustdesk": "eyJpdiI6ImRwRFRCYjNmc1htZUJMZ1ciLCJ0YWciOiJRYTdpcy9wRTdlTnpLemQ0Y1VqMTF3PT0iLCJkYXRhIjoiL3hEczU5OVRrRzAralFNPSJ9",
"dasu-pcv:adminpcv": "eyJpdiI6IlVUK3JOamxCeFhGUUlCMlUiLCJ0YWciOiI0MC81bE10Y0FJM1BqMTQ1NUIxWjhBPT0iLCJkYXRhIjoiUzZuOUIxaTVISmJpclNrREZYSTkwM1k9In0="
} }
+31
View File
@@ -0,0 +1,31 @@
require 'tiny_tds'
require 'time'
pass = ENV['PASS'] || begin
puts "Falta ENV['PASS'] (usar candados run utnlarioja.intranet:monlaricardo 'ruby adn/tools/cli/dasuten_backup_origen.rb')"
exit 1
end
host = ENV['SQL_HOST'] || '10.0.10.200'
user = ENV['SQL_USER'] || 'UTNlarioja\\monlaricardo'
begin
client = TinyTds::Client.new(
username: user,
password: pass,
host: host,
timeout: 600 # 10 minutos
)
puts "[+] Conectado exitosamente a SQL Server en #{host}"
backup_file = "E:\\BK_SQL\\sysdasuten_compressed_ADN.bak"
puts "[*] Iniciando BACKUP DATABASE de 'sysdasuten' hacia #{backup_file}..."
puts " (Esto puede tomar unos 10-30 segundos usando compresión, por favor espera...)"
start_time = Time.now
res = client.execute("BACKUP DATABASE sysdasuten TO DISK = '#{backup_file}' WITH INIT, COMPRESSION, STATS=10")
res.each { |r| puts r } # Consumir resultados para esperar a que termine
duration = Time.now - start_time
puts "[+] Backup completado exitosamente en #{duration.round(2)} segundos."
rescue => e
puts "[!] Error fatal: #{e.message}"
end
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
# Dron monitor de backup vzdump para VM 107
echo "🛸 Monitoreando backup de VM 107 en srv-dasu (vía tasks de PVE)..."
while true; do
ACTIVE_TASKS=$(ssh srv-dasu "cat /var/log/pve/tasks/active 2>/dev/null" || true)
if echo "$ACTIVE_TASKS" | grep -q "vzdump:107"; then
echo "$(date +%H:%M:%S) | 🚧 Backup VZDUMP 107 en curso..."
else
echo "$(date +%H:%M:%S) | ✅ Backup de VM 107 completado"
exit 0
fi
sleep 30
done
+1 -1
View File
@@ -1 +1 @@
{"id":253,"cmd":"Get-Service | Where-Object { $_.Name -like '*qemu*' -or $_.Name -like '*ga*' -or $_.DisplayName -like '*QEMU*' -or $_.DisplayName -like '*Guest Agent*' } | Format-Table Name,DisplayName,Status,StartType -AutoSize"} {"id":260,"cmd":"hostname"}
@@ -199,11 +199,11 @@ Crear dos VMs nuevas (SQL Server + PC cliente) en `srv-dasu`, instalar el sistem
#### 8.1 Orquestación de Drones (Extracción y Tránsito) #### 8.1 Orquestación de Drones (Extracción y Tránsito)
- [x] **Generar Backup (Origen):** Dron orquestador ejecutado llamando al backend de postgres de Bitácoras. Backup generado hacia `E:\BK_SQL\sysdasuten_compressed_ADN.bak` en tiempo real (44.8 segundos). ✅ - [x] **Generar Backup (Origen):** Dron orquestador ejecutado llamando al backend de postgres de Bitácoras. Backup generado hacia `E:\BK_SQL\sysdasuten_compressed_ADN.bak` en tiempo real (44.8 segundos). ✅
- [x] **Transferencia SMB (fenix -> ns8):** Script empaquetado (dron bypass) usando autenticación In-Memory desde `candados` con `smbget`, resolviendo las limitaciones del dominio. Descarga completada en NS8 (`/var/tmp/`). ✅ - [x] **Transferencia SMB (fenix -> ns8):** Script empaquetado (dron bypass) usando autenticación In-Memory desde `candados` con `smbget`, resolviendo las limitaciones del dominio. Descarga completada en NS8 (`/var/tmp/`). ✅
- [ ] **Transferencia segura SCP (ns8 -> dasu-sql4):** Dron en tránsito (1.4 GB) cruzando el túnel por `srv-dasu` en modo ProxyCommand hacia el volumen `F:\BACKUP\` en Windows Core. - [x] **Transferencia segura SCP (ns8 -> dasu-sql4):** Dron en tránsito cruzando el túnel por `srv-dasu` en modo ProxyCommand hacia el volumen `F:\BACKUP\` en Windows Core (tiempo de transferencia ~7m19s). ✅
#### 8.2 Restauración y Saneamiento (Destino) #### 8.2 Restauración y Saneamiento (Destino)
- [ ] **Restauración Transaccional:** Ejecutar el `RESTORE DATABASE ... WITH REPLACE` asegurando el forzado a Single User previo para abortar sesiones huerfanas (usando WMI/SSH). - [x] **Restauración Transaccional:** Ejecución de `RESTORE DATABASE ... WITH REPLACE` asegurando el forzado a Single User (ejecutado directo, el Dron arrojó error de parsing UTF8 por los mensajes en ISO-8859-1 de `sqlcmd`). ✅
- [ ] **Verificación Post-Restore:** Dron sanitario que ejecute comprobación `DBCC CHECKDB` certificando la consistencia final de la DB. - [x] **Verificación Post-Restore:** Comprobación `DBCC CHECKDB` certificando la consistencia final de la DB.
--- ---
| **Red** | Privada 10.0.100.x (gw interno) | DHCP del ISP (gw del ISP) | | **Red** | Privada 10.0.100.x (gw interno) | DHCP del ISP (gw del ISP) |
+3 -2
View File
@@ -28,8 +28,9 @@
- **Dominio anterior**: UTNLARIOJA (Desvinculado) - **Dominio anterior**: UTNLARIOJA (Desvinculado)
## Gestión ## Gestión
- **Admin Local**: `adminpcv` - **Admin Local**: `adminpcv` ($lldgUTNlarioja00)
- **Acceso**: Consola noVNC de Proxmox (no requiere SSH ni W-Zombi para configuración base) - **Acceso Remoto**: RustDesk ID 296893471 (Password permanente: `$DASU123utn`)
- **Gestor Backup**: Proxmox Console noVNC
## Software ## Software
- **Launcher DASUTEN**: Instalado (configuración legacy apuntando al antiguo SQL con dominio) - **Launcher DASUTEN**: Instalado (configuración legacy apuntando al antiguo SQL con dominio)