Files
claudetools/projects/dataforth-dos/deployment-scripts/fix-sync-functions.ps1

136 lines
5.2 KiB
PowerShell

# Fix the sync functions more precisely
$password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("INTRANET\sysadmin", $password)
Write-Host "=== Fixing Sync Script Functions ===" -ForegroundColor Cyan
Write-Host ""
Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
$scriptPath = "C:\Shares\test\scripts\Sync-FromNAS.ps1"
$content = Get-Content $scriptPath
Write-Host "[1] Finding Copy-FromNAS function" -ForegroundColor Yellow
Write-Host "=" * 80 -ForegroundColor Gray
# Find the function
for ($i = 0; $i -lt $content.Count; $i++) {
if ($content[$i] -match "^function Copy-FromNAS") {
Write-Host "Found at line $($i+1): $($content[$i])" -ForegroundColor Green
# Show the function (next 10 lines)
Write-Host "Current function:" -ForegroundColor Cyan
for ($j = $i; $j -lt ($i + 10) -and $j -lt $content.Count; $j++) {
Write-Host " $($j+1): $($content[$j])" -ForegroundColor Gray
}
break
}
}
Write-Host ""
Write-Host "[2] Finding Copy-ToNAS function" -ForegroundColor Yellow
Write-Host "=" * 80 -ForegroundColor Gray
for ($i = 0; $i -lt $content.Count; $i++) {
if ($content[$i] -match "^function Copy-ToNAS") {
Write-Host "Found at line $($i+1): $($content[$i])" -ForegroundColor Green
# Show the function (next 10 lines)
Write-Host "Current function:" -ForegroundColor Cyan
for ($j = $i; $j -lt ($i + 10) -and $j -lt $content.Count; $j++) {
Write-Host " $($j+1): $($content[$j])" -ForegroundColor Gray
}
break
}
}
Write-Host ""
Write-Host "[3] Creating updated script with OpenSSH" -ForegroundColor Yellow
Write-Host "=" * 80 -ForegroundColor Gray
# Create new script content with line-by-line replacement
$newContent = @()
$inCopyFromNAS = $false
$inCopyToNAS = $false
$funcDepth = 0
for ($i = 0; $i -lt $content.Count; $i++) {
$line = $content[$i]
# Track when we enter functions
if ($line -match "^function Copy-FromNAS") {
$inCopyFromNAS = $true
$funcDepth = 0
$newContent += "function Copy-FromNAS {"
$newContent += " param([string]`$RemotePath, [string]`$LocalPath)"
$newContent += ""
$newContent += " # OpenSSH scp with verbose logging"
$newContent += " `$result = & `$SCP -v -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=`"`$SCRIPTS_DIR\.ssh\known_hosts`" `"`${NAS_USER}@`${NAS_IP}:`$RemotePath`" `$LocalPath 2>&1"
$newContent += ""
$newContent += " if (`$LASTEXITCODE -ne 0) {"
$newContent += " Write-Log `" SCP PULL ERROR: `$(`$result | Out-String)`""
$newContent += " }"
$newContent += ""
$newContent += " return `$LASTEXITCODE -eq 0"
$newContent += "}"
# Skip until we find the closing brace
continue
}
if ($line -match "^function Copy-ToNAS") {
$inCopyToNAS = $true
$funcDepth = 0
$newContent += "function Copy-ToNAS {"
$newContent += " param([string]`$LocalPath, [string]`$RemotePath)"
$newContent += ""
$newContent += " # OpenSSH scp with verbose logging"
$newContent += " `$result = & `$SCP -v -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=`"`$SCRIPTS_DIR\.ssh\known_hosts`" `$LocalPath `"`${NAS_USER}@`${NAS_IP}:`$RemotePath`" 2>&1"
$newContent += ""
$newContent += " if (`$LASTEXITCODE -ne 0) {"
$newContent += " Write-Log `" SCP PUSH ERROR: `$(`$result | Out-String)`""
$newContent += " }"
$newContent += ""
$newContent += " return `$LASTEXITCODE -eq 0"
$newContent += "}"
# Skip until we find the closing brace
continue
}
# Track braces when inside function
if ($inCopyFromNAS -or $inCopyToNAS) {
if ($line -match "{") { $funcDepth++ }
if ($line -match "}") {
$funcDepth--
if ($funcDepth -le 0) {
# End of function, stop skipping
$inCopyFromNAS = $false
$inCopyToNAS = $false
}
}
# Skip lines inside the old function
continue
}
# Update tool paths
if ($line -match '\$PSCP\s*=') {
$newContent += '$SCP = "C:\Program Files\OpenSSH\scp.exe"'
continue
}
if ($line -match '\$PLINK\s*=') {
$newContent += '$SSH = "C:\Program Files\OpenSSH\ssh.exe"'
continue
}
# Keep all other lines
$newContent += $line
}
# Save the updated script
$newContent | Out-File -FilePath $scriptPath -Encoding UTF8 -Force
Write-Host "[OK] Script updated with OpenSSH functions" -ForegroundColor Green
Write-Host "[OK] Saved: $scriptPath" -ForegroundColor Green
}
Write-Host ""
Write-Host "=== Update Complete ===" -ForegroundColor Cyan