sync: Dataforth sync fixes, TestDataDB stability, and client scripts
Dataforth DOS: - TestDataDB: singleton DB connection fix (crash prevention), WAL mode, WinSW service config, backup script, uncaught exception handlers - Sync-FromNAS.ps1: Get-NASFileList temp file approach to avoid SSH stdout deadlock, *> $null output suppression, 8.3 filename filter for PUSH phase, backslash-escaped SCP paths, rename-to-.synced - import.js: INSERT OR REPLACE for re-tested devices - Full import run: 1,028,275 -> 1,632,793 records, indexes added - Deploy script for sync fixes to AD2 Client scripts (temp/): - BG Builders: Lesley account check, MFA phone update - Lonestar Electrical: Kyla/Russ Google Workspace setup, 2FA bypass - AD2 diagnostics and NAS connectivity tests PENDING: Investigate why newest test_date is Jan 19 despite daily tests Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
48
temp/test-nas-from-ad2.ps1
Normal file
48
temp/test-nas-from-ad2.ps1
Normal file
@@ -0,0 +1,48 @@
|
||||
# Test script to run ON AD2 - diagnoses NAS SSH hang issue
|
||||
$SSH = "C:\Program Files\OpenSSH\ssh.exe"
|
||||
$SSH_KEY = "C:\Users\sysadmin\.ssh\id_ed25519"
|
||||
$NAS_USER = "root"
|
||||
$NAS_IP = "192.168.0.9"
|
||||
|
||||
Write-Host "=== Step 1: Kill any hung SSH processes ==="
|
||||
Get-Process ssh -ErrorAction SilentlyContinue | ForEach-Object {
|
||||
Write-Host " Killing SSH PID $($_.Id)"
|
||||
Stop-Process -Id $_.Id -Force
|
||||
}
|
||||
Get-Process powershell -ErrorAction SilentlyContinue | Where-Object { $_.Id -ne $PID } | ForEach-Object {
|
||||
Write-Host " Other PowerShell PID $($_.Id) - CommandLine: $($_.CommandLine)"
|
||||
}
|
||||
|
||||
Write-Host "`n=== Step 2: Basic SSH echo test ==="
|
||||
$t1 = Get-Date
|
||||
$r1 = & $SSH -i $SSH_KEY -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new "${NAS_USER}@${NAS_IP}" "echo NAS_OK" 2>&1
|
||||
$d1 = (Get-Date) - $t1
|
||||
Write-Host " Result: $r1 (took $($d1.TotalSeconds)s)"
|
||||
|
||||
Write-Host "`n=== Step 3: find with temp file redirect (the actual fix) ==="
|
||||
$t2 = Get-Date
|
||||
Write-Host " Running find with output to /tmp/test-list.txt..."
|
||||
# This is exactly what Get-NASFileList does - output goes to file on NAS, stdout discarded
|
||||
& $SSH -i $SSH_KEY -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new "${NAS_USER}@${NAS_IP}" "find /data/test/TS-*/LOGS -name '*.DAT' -type f -mmin -1440 > /tmp/test-list.txt 2>/dev/null" *> $null
|
||||
$d2 = (Get-Date) - $t2
|
||||
Write-Host " SSH returned in $($d2.TotalSeconds)s"
|
||||
|
||||
Write-Host "`n=== Step 4: Count files found ==="
|
||||
$r3 = & $SSH -i $SSH_KEY -o BatchMode=yes -o ConnectTimeout=10 "${NAS_USER}@${NAS_IP}" "wc -l /tmp/test-list.txt; head -3 /tmp/test-list.txt" 2>&1
|
||||
foreach ($line in $r3) { Write-Host " $line" }
|
||||
|
||||
Write-Host "`n=== Step 5: Pull file list via SCP ==="
|
||||
$localTemp = "$env:TEMP\test-nas-filelist.txt"
|
||||
& "C:\Program Files\OpenSSH\scp.exe" -O -i $SSH_KEY -o StrictHostKeyChecking=accept-new "${NAS_USER}@${NAS_IP}:/tmp/test-list.txt" "$localTemp" *> $null
|
||||
if (Test-Path $localTemp) {
|
||||
$lines = Get-Content $localTemp | Where-Object { $_.Trim() -ne '' }
|
||||
Write-Host " Downloaded $($lines.Count) file paths"
|
||||
Remove-Item $localTemp -ErrorAction SilentlyContinue
|
||||
} else {
|
||||
Write-Host " ERROR: SCP failed to download file"
|
||||
}
|
||||
|
||||
Write-Host "`n=== Step 6: Cleanup ==="
|
||||
& $SSH -i $SSH_KEY -o BatchMode=yes -o ConnectTimeout=10 "${NAS_USER}@${NAS_IP}" "rm -f /tmp/test-list.txt" 2>&1 | Out-Null
|
||||
|
||||
Write-Host "`n=== DONE ==="
|
||||
Reference in New Issue
Block a user