У нас есть сценарии 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. Есть идеи, почему это так?