#bash #abap #lftp
#bash #abap #lftp
Вопрос:
У нас есть скрипты 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
, мы ничего не получаем из стандартного вывода. Мы получаем ошибки, поэтому я предполагаю, что он захватывает stderr. Есть идеи, почему это так?
Комментарии:
1. Большое спасибо за ответ. Да, я посмотрел на это, и вы правы насчет буферизации. Сейчас я записываю выходные данные в файл журнала и загружаю файл в конце скрипта. Теперь вывод фиксируется, потому что я делаю cat файла журнала в конце. Я буду продолжать экспериментировать.
2. Если вы не возражаете, я опубликую свой комментарий в качестве ответа.
Ответ №1:
Это не имеет отношения ни к SAP, ни к ABAP. Посмотрите на сообщение здесь на ServerFault.com .
Возможно, команда буферизует свой вывод, посмотрите принятый ответ там и попытайтесь его отменить.