Critical fix for DOS 6.22 compatibility - CRLF line endings were being converted to LF during AD2-to-NAS sync, causing BAT files to fail on DOS. Root Cause: - OpenSSH scp uses SFTP protocol by default (text mode) - SFTP converts line endings (CRLF → LF) - DOS 6.22 requires CRLF for batch file execution Solution - Fixed AD2 Sync Script: - Added -O flag to scp commands in Sync-FromNAS.ps1 - Forces legacy SCP protocol (binary mode) - Preserves CRLF line endings during transfer Created deployment scripts: - fix-ad2-scp-line-endings.ps1: Updates Sync-FromNAS.ps1 with -O flag - deploy-all-bat-files.ps1: Deploy 6 BAT files to AD2 (UPDATE, NWTOC, CTONW, CHECKUPD, REBOOT, DEPLOY) - deploy-bat-to-nas-direct.ps1: Direct SCP to NAS with -O flag for immediate testing - verify-nas-crlf.ps1: Validates CRLF preservation on NAS Created diagnostic scripts: - check-line-endings.ps1: Compare original vs NAS file line endings - check-ad2-sync-log.ps1: Monitor sync log on AD2 - check-ad2-bat-files.ps1: Verify files on AD2 - check-scp-commands.ps1: Analyze SCP command usage - trigger-ad2-sync-now.ps1: Manual sync trigger for testing Verification: - DEPLOY.BAT: 9,753 bytes with CRLF (was 9,408 bytes with LF) - All 6 BAT files deployed to NAS with CRLF preserved - DOS machines can now execute batch files from T:\ Files deployed: - DEPLOY.BAT (one-time installer) - UPDATE.BAT (backup utility) - NWTOC.BAT (network to computer updates) - CTONW.BAT (computer to network uploads) - CHECKUPD.BAT (check for updates) - REBOOT.BAT (reboot utility) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
48 lines
1.8 KiB
PowerShell
48 lines
1.8 KiB
PowerShell
# Fix AD2 Sync-FromNAS.ps1 to preserve CRLF line endings
|
|
# Add -O flag to SCP commands to use legacy protocol (binary mode)
|
|
|
|
$Username = "INTRANET\sysadmin"
|
|
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
|
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
|
|
|
Write-Host "[INFO] Connecting to AD2..."
|
|
|
|
# Read the current script
|
|
$ScriptContent = Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
|
Get-Content 'C:\Shares\test\scripts\Sync-FromNAS.ps1' -Raw
|
|
}
|
|
|
|
Write-Host "[INFO] Current script retrieved"
|
|
|
|
# Create backup
|
|
$BackupName = "Sync-FromNAS_backup_$(Get-Date -Format 'yyyyMMdd_HHmmss').ps1"
|
|
Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
|
param($Content, $Backup)
|
|
Set-Content "C:\Shares\test\scripts\$Backup" -Value $Content
|
|
} -ArgumentList $ScriptContent, $BackupName
|
|
|
|
Write-Host "[OK] Backup created: $BackupName"
|
|
|
|
# Fix the script - Add -O flag to SCP commands
|
|
$FixedContent = $ScriptContent -replace '& \$SCP -o StrictHostKeyChecking', '& $SCP -O -o StrictHostKeyChecking'
|
|
|
|
# Count changes
|
|
$Changes = ([regex]::Matches($FixedContent, '-O -o')).Count
|
|
Write-Host "[INFO] Adding -O flag to $Changes SCP commands"
|
|
|
|
# Upload fixed script
|
|
Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
|
param($Content)
|
|
Set-Content 'C:\Shares\test\scripts\Sync-FromNAS.ps1' -Value $Content
|
|
} -ArgumentList $FixedContent
|
|
|
|
Write-Host "[SUCCESS] Sync-FromNAS.ps1 updated on AD2"
|
|
Write-Host ""
|
|
Write-Host "[INFO] The -O flag forces legacy SCP protocol (binary mode)"
|
|
Write-Host "[INFO] This prevents line ending conversion (CRLF preserved)"
|
|
Write-Host ""
|
|
Write-Host "Next steps:"
|
|
Write-Host " 1. Redeploy DEPLOY.BAT and UPDATE.BAT to AD2"
|
|
Write-Host " 2. Wait for next sync cycle (runs every 15 minutes)"
|
|
Write-Host " 3. Verify CRLF preserved on NAS"
|