lftp、stdout、stderr 和 SAP exec_protocol

lftp,stdout, stderr and SAP exec_protocol

我们有 linux 脚本通过预共享密钥执行 SFTP,但最近供应商要求密钥和密码,我想这类似于双因素身份验证。因此供应商使用预共享密钥进行身份验证,然后提示输入密码。在输入密码之前,您只是部分通过了身份验证。所以我的标准脚本不起作用。为了解决这个问题,我发现 lftp 可以在脚本中传递密码并解决脚本放置和获取文件的问题。这是我的脚本:

     #!/bin/sh
     # ###########################
     # Parameters
     #  Source Directory
     #  Source File
     #  Target IP
     #  Target File
     #  Target Directory
     #  Mode (binary or ascii)
     #  User
     #  Pwd
     # ###########################
         lftp sftp://:@ -e "cd ; put ; bye"

此脚本是通过调用函数 SXPG_COMMAND_EXECUTE 从 SAP abap 程序调用的。来自 shell 脚本的 return 信息通常在 return 参数 EXEC_PROTOCOL 中捕获。所有其他 bash 脚本都能正常工作,但对于 lftp,我们从标准输出中什么也得不到。我们确实遇到了错误,所以我假设它正在捕获 stderr。知道这是为什么吗?

它与 SAP 和 ABAP 都无关。看看 post here on the ServerFault.com.

该命令可能正在缓冲其输出,查看已接受的答案并尝试取消缓冲。