使用Bitvise SFTP批处理脚本跨服务器传输文件失败求助
Windows任务计划SFTP传输失败排查求助
需求与任务计划配置
需配置Windows任务计划完成以下操作:
- 将Server A中
D:\SFTP_Jump_Location\SPANIST路径下的文件传输至Server B - 将Server A上的源文件归档至
D:\EMDAD\ETL_SERVER_SFTP_TRANSFER_ARCHIVE\SPANIST路径
任务计划创建时的设置:
- 「启动程序」窗口中批处理文件路径:
"D:\EMDAD\SFTP_Scripts\SPANIST\NEW_SFTP_SPANIST_TO_EMDAD.bat" - 参数定义:
SPANIST D:\SFTP_Jump_Location\SPANIST D:\EMDAD\ETL_SERVER_SFTP_TRANSFER_ARCHIVE\SPANIST >D:\EMDAD\SFTP_Scripts\SPANIST\LOGS\SFTP_SPANIST_TO_EMDAD_Detail_%date:~6,4%%date:~3,2%%date:~0,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.log '
问题现象
批处理脚本中的sftpc步骤执行失败。已验证Bitvise用户名和密码有效,手动分步执行代码时能成功完成认证,但通过任务计划运行时无法将文件传输至Server B。
批处理脚本代码
set "Pattern=%~1" set "Src_Path=%~2" set "Arc_Path=%~3" set "CurrentDate=" & for /F "tokens=1-6 delims=/: " %%G in ('%SystemRoot%\System32\robocopy.exe "%SystemDrive%\|" . /NJH') do if not defined CurrentDate set "CurrentDate=%%G%%H%%I" & set "CurrentTime=%%J%%K%%L" set "LogFileName=D:\EMDAD\SFTP_Scripts\SPANIST\SFTP_%Pattern%_TO_EMDAD_%CurrentDate%CurrentTime%" echo %DATE% %TIME% Starting process echo %DATE% %TIME% Changing directory to "%Src_Path%\%CurrentDate%">"%LogFileName%" pushd "%Src_Path%\%CurrentDate%" || (echo Failed!>>"%LogFileName%" & popd & exit /B 1) echo %DATE% %TIME% Starting transfer (copy/sftp)>>"%LogFileName%" "C:\Program Files (x86)\Bitvise SSH Client\sftpc.exe" prod_emdad_spanist@10.2.173.3 -pw=Emdad123 -cmd="put %Src_Path%\%CurrentDate%\%Pattern%*" if not errorlevel 1 goto ARCH echo %DATE% %TIME% ERROR: Issue in transferring the files to ETL server>>"%LogFileName%" :ARCH move "%Src_Path%\%CurrentDate%" "%Arc_Path%\" if not errorlevel 1 goto NEXT echo %DATE% %TIME% ERROR: Error in archiving files!>>"%LogFileName%" popd & exit /B 1 :NEXT echo "%DATE% %TIME% Files transferred and archived successfully.>"%LogFileName%" popd & endloca
任务计划XML内容
<?xml version="1.0" encoding="UTF-16"?> <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2024-07-08T18:11:59.5154495</Date> <Author>SJN\emdadetprd</Author> <URI>\NEW_PROD_EMDAD_SPANIST_SFTP</URI> </RegistrationInfo> <Triggers> <CalendarTrigger> <StartBoundary>2024-07-08T16:00:00</StartBoundary> <Enabled>true</Enabled> <ScheduleByDay> <DaysInterval>1</DaysInterval> </ScheduleByDay> </CalendarTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>S-1-5-21-3895855529-3008202435-1737094514-1599</UserId> <LogonType>Password</LogonType> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>PT72H</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <Exec> <Command>"D:\EMDAD\SFTP_Scripts\SPANIST\NEW_SFTP_SPANIST_TO_EMDAD.bat"</Command> <Arguments>SPANIST D:\SFTP_Jump_Location\SPANIST\DAT D:\EMDAD\ETL_SERVER_SFTP_TRANSFER_ARCHIVE\SPANIST</Arguments> <WorkingDirectory>D:\EMDAD\SFTP_Scripts\SPANIST\</WorkingDirectory> </Exec> </Actions> </Task>
恳请协助排查问题原因并提供解决方案。
内容的提问来源于stack exchange,提问作者Afzaal Ahmad
相关产品推荐
相关产品推荐

