#rest #curl #sharepoint #talend #rhel
#rest #curl #sharepoint #talend #rhel
Вопрос:
Я использую следующую последовательность команд cURL для загрузки файлов в Sharepoint.
# Get Token
curl -X POST -d "" --ntlm -u usr:pw http://.../_api/contextinfo
# Checkout File
curl -X POST -d "" -H "X-RequestDigest: 0x...,11 Sep 2020 14:45:30 -0000" --ntlm -u usr:pw "http://.../_api/web/GetFileByServerRelativeUrl('...')/checkOut()"
# Upload File
curl --ntlm -u usr:pw --upload-file ... http://...
# Check In
curl -X POST -d "" -H "X-RequestDigest: 0x...,11 Sep 2020 14:45:30 -0000" --ntlm -u usr:pw "http://.../_api/web/GetFileByServerRelativeUrl('...')/checkIn(comment='Comment',checkInType=0)"
Это отлично работает при локальном запуске с использованием libcurl. Этого не происходит при запуске на RHEL7. Затем ‘ -0000’ в токене заголовка интерпретируется как параметр, приводящий к сообщению об ошибке ниже.
curl: option -0000': is unkown
Я не могу удалить пробел или минус, потому что это часть токена. Я уже пытался избежать заголовка несколькими способами, но безуспешно. У вас есть идея о том, как это решить?
Комментарии:
1. в компоненте tSystem вы используете одну команду или массив команд?
2. Я пробовал оба способа.
Ответ №1:
Я подозреваю, что вы вызываете curl через SSH, вот так:
ssh $host curl -X POST -d "" -H "X-RequestDigest: 0x...,11 Sep 2020 14:45:30 -0000" --ntlm -u usr:pw "http://.../_api/web/GetFileByServerRelativeUrl('...')/checkIn(comment='Comment',checkInType=0)"
Это не работает, потому что SSH не передает вектор аргументов в виде массива строк. Вместо этого он передает единственную строку, состоящую из всех аргументов, разделенных пробелами. Вместо этого вы должны написать что-то вроде этого:
ssh $host "curl -X POST -d "" -H "X-RequestDigest: 0x...,11 Sep 2020 14:45:30 -0000" --ntlm -u usr:pw "http://.../_api/web/GetFileByServerRelativeUrl('...')/checkIn(comment='Comment',checkInType=0)""
(Обратите внимание, что указание паролей в командной строке может быть небезопасным, поскольку аргументы видны с помощью ps
.)
Комментарии:
1. Я запускаю команды в задании Talend ETL, используя их компонент tSystem. Пожалуйста, обратите внимание, что шаги «Получить токен» и «Загрузить файл» выполняются нормально. Кроме того, я получаю ответ 403 от Sharepoint, если удаляю пробел перед минусом.
2. Я думаю, что это скорее вопрос таланта. Вероятно, ему нужна какая-то похожая форма цитирования.