#!/usr/bin/env ruby # frozen_string_literal: true require 'tiny_tds' require_relative 'drones/lib/dasu_executor' puts "=== VERIFICANDO BACKUPS EN FENIX (E:\\BK_SQL\\sysdasuten\\) ===" puts "" pass_cmd = `ruby adn/tools/candados/candados.rb get utnlarioja.intranet:monlaricardo 2>/dev/null`.strip sql_user = 'UTNlarioja\\monlaricardo' sql_host = '10.0.10.200' client = TinyTds::Client.new( username: sql_user, password: pass_cmd, host: sql_host, timeout: 600, database: 'sysdasuten' ) # Listar backups en E:\BK_SQL\sysdasuten\ ps_script = <<~PSCMD.strip $ErrorActionPreference = "Stop" $path = "E:\\BK_SQL\\sysdasuten" if (Test-Path $path) { $backups = Get-ChildItem "$path\\sysdasuten*.bak" | Sort-Object LastWriteTime -Descending Write-Host "Archivos encontrados:" $backups | ForEach-Object { $sizeMB = [math]::Round($_.Length / 1MB, 2) Write-Host " $($_.Name) - ${sizeMB} MB - $($_.LastWriteTime)" } Write-Host "`nTotal archivos: $($backups.Count)" $totalSize = ($backups | Measure-Object -Property Length -Sum).Sum / 1MB Write-Host "Total tamaño: $([math]::Round($totalSize, 2)) MB" # Si hay más de 1, eliminar los viejos if ($backups.Count -gt 1) { $aEliminar = $backups | Select-Object -Skip 1 Write-Host "`n=== ELIMINANDO $($aEliminar.Count) ARCHIVOS ===" $aEliminar | ForEach-Object { Write-Host " Eliminando: $($_.Name)" Remove-Item $_.FullName -Force } $restantes = Get-ChildItem "$path\\sysdasuten*.bak" | Sort-Object LastWriteTime -Descending Write-Host "`nRestantes: $($restantes.Count)" } } else { Write-Host "El directorio no existe" } PSCMD result = client.execute("EXEC xp_cmdshell 'powershell -Command \"' + ps_script.gsub('\"', '\"\"') + '\"'") result.each { |r| puts r['output'] if r['output'] } client.close