lftp, stdout, stderr и SAP exec_protocol

Oct 21 2020

У нас есть сценарии Linux для выполнения SFTP с использованием предварительных ключей, но в последнее время поставщик требует ключ и пароль, я думаю, это похоже на двухфакторную аутентификацию. Таким образом, поставщик аутентифицируется с помощью предварительного ключа, а затем запрашивает пароль. Пока пароль не будет введен, вы аутентифицированы только частично. Так что мои стандартные скрипты не работают. Чтобы обойти это, я обнаружил, что 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"

Этот сценарий вызывается из программы SAP abap путем вызова функции SXPG_COMMAND_EXECUTE. Возвращаемая информация из сценариев оболочки обычно фиксируется в возвращаемом параметре EXEC_PROTOCOL. Все отлично работает со всеми другими сценариями bash, но lftpмы ничего не получаем из stdout. Мы получаем ошибки, поэтому я предполагаю, что он захватывает stderr. Есть идеи, почему это так?

Ответы

Jagger Oct 22 2020 at 13:35

Это не имеет отношения ни к SAP, ни к ABAP. Посмотрите сообщение здесь, на ServerFault.com .

Команда может буферизовать свой вывод, посмотрите там принятый ответ и попытайтесь разблокировать его.