[A04.P005] Actualizados hitos terminados de la Fase 8, y scripts del orquestador
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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="
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
Executable
+13
@@ -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 @@
|
|||||||
{"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
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user