fix: Preserve CRLF line endings in DOS BAT files during sync
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>
This commit is contained in:
53
check-ad2-bat-files.ps1
Normal file
53
check-ad2-bat-files.ps1
Normal file
@@ -0,0 +1,53 @@
|
||||
# Check DEPLOY.BAT and UPDATE.BAT on AD2
|
||||
|
||||
$Username = "INTRANET\sysadmin"
|
||||
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
||||
|
||||
Write-Host "[INFO] Connecting to AD2..."
|
||||
|
||||
New-PSDrive -Name TEMP_AD2 -PSProvider FileSystem -Root "\\192.168.0.6\C$" -Credential $Cred -ErrorAction Stop | Out-Null
|
||||
|
||||
Write-Host "[INFO] Checking DEPLOY.BAT and UPDATE.BAT..."
|
||||
Write-Host ""
|
||||
|
||||
$DeployFile = Get-Item "TEMP_AD2:\Shares\test\DEPLOY.BAT" -ErrorAction SilentlyContinue
|
||||
$UpdateFile = Get-Item "TEMP_AD2:\Shares\test\UPDATE.BAT" -ErrorAction SilentlyContinue
|
||||
|
||||
if ($DeployFile) {
|
||||
Write-Host "[OK] DEPLOY.BAT found on AD2"
|
||||
Write-Host " Last Modified: $($DeployFile.LastWriteTime)"
|
||||
Write-Host " Size: $($DeployFile.Length) bytes"
|
||||
|
||||
# Check line endings
|
||||
$Content = Get-Content "TEMP_AD2:\Shares\test\DEPLOY.BAT" -Raw
|
||||
if ($Content -match "`r`n") {
|
||||
Write-Host " Line Endings: CRLF (DOS-compatible) [OK]"
|
||||
} elseif ($Content -match "`n") {
|
||||
Write-Host " Line Endings: LF only [WARNING]"
|
||||
}
|
||||
} else {
|
||||
Write-Host "[ERROR] DEPLOY.BAT not found on AD2"
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
if ($UpdateFile) {
|
||||
Write-Host "[OK] UPDATE.BAT found on AD2"
|
||||
Write-Host " Last Modified: $($UpdateFile.LastWriteTime)"
|
||||
Write-Host " Size: $($UpdateFile.Length) bytes"
|
||||
|
||||
# Check line endings
|
||||
$Content = Get-Content "TEMP_AD2:\Shares\test\UPDATE.BAT" -Raw
|
||||
if ($Content -match "`r`n") {
|
||||
Write-Host " Line Endings: CRLF (DOS-compatible) [OK]"
|
||||
} elseif ($Content -match "`n") {
|
||||
Write-Host " Line Endings: LF only [WARNING]"
|
||||
}
|
||||
} else {
|
||||
Write-Host "[ERROR] UPDATE.BAT not found on AD2"
|
||||
}
|
||||
|
||||
Remove-PSDrive TEMP_AD2
|
||||
Write-Host ""
|
||||
Write-Host "[INFO] Note: Files sync to NAS every 15 minutes via AD2's scheduled task"
|
||||
Reference in New Issue
Block a user