lftp、stdout、stderrおよびSAP exec_protocol

Oct 21 2020

事前共有キーを介してSFTPを実行するLinuxスクリプトがありますが、最近、ベンダーがキーとパスワードを要求しています。これは2要素認証に似ていると思います。そのため、ベンダーは事前共有キーを使用して認証し、パスワードの入力を求めます。パスワードが入力されるまで、あなたは部分的にしか認証されません。そのため、私の標準スクリプトは機能していません。これを回避するためlftpに、スクリプトでパスワードを渡すことができ、ファイルを配置して取得するスクリプトの問題を解決できることを発見しました。これが私のスクリプトです:

     #!/bin/sh
     # ###########################
     # Parameters
     # $1 Source Directory # $2 Source File
     # $3 Target IP # $4 Target File
     # $5 Target Directory # $6 Mode (binary or ascii)
     # $7 User # $8 Pwd
     # ###########################
         lftp sftp://$7:$8@$3 -e "cd $5; put $1$2; bye"

このスクリプトは、関数を呼び出すことにより、SAPabapプログラムから呼び出されますSXPG_COMMAND_EXECUTE。シェルスクリプトからの戻り情報は通常、returnパラメータに取り込まれますEXEC_PROTOCOL。すべてが他のすべてのbashスクリプトで正常に機能しますがlftp、を使用すると、stdoutから何も取得されません。エラーが発生するので、stderrをキャプチャしていると思います。これがなぜであるかについて何か考えはありますか?

回答

Jagger Oct 22 2020 at 13:35

SAPにもABAPにも関係ありません。ポストを見て、ここにServerFault.com。

コマンドが出力をバッファリングしている可能性があります。そこで受け入れられた回答を確認し、バッファリングを解除してみてください。