Это то, что я пробовал:
curl http://git.ep.petrobras.com.br/api/v3/session --data-urlencode 'login=myUser&password=myPass'
Ответ:
{"message":"401 Unauthorized"}
Это то, что я пробовал:
curl http://git.ep.petrobras.com.br/api/v3/session --data-urlencode 'login=myUser&password=myPass'
Ответ:
{"message":"401 Unauthorized"}
Проблема заключается в опции data-urlencode
CURL. Поскольку это HTTP POST, вам не нужно кодировать данные URL и на самом деле кодировать &
в &
и вызывать проблему. Вместо этого используйте параметр --data
.
curl http://git.ep.petrobras.com.br/api/v3/session --data 'login=myUser&password=myPass'
Кроме того, будьте осторожны при отправке учетных данных через простой HTTP. Его можно легко понюхать.
Вот как это сделать:
$ curl http://git.ep.petrobras.com.br/api/v3/session/ --data-urlencode 'login=myUser' --data-urlencode 'password=myPass'
Решение, указанное Стивеном, не работает, если ваше имя пользователя или пароль содержат символы, которые должны быть указаны. Формат name=content
будет urlencode в части content
(часть name
должна быть указана, но login
и password
в порядке).
Чтобы получить private_token
, вы можете вывести вывод curl в jq следующим образом:
$ curl [as above] | jq --raw-output .private_token
x_the_private_token_value_x
Таким образом, вы можете легко использовать его в оболочке script.
Кроме того, как уже указывал Стивен, вместо этого используйте https, чтобы ваш пароль не был передан в виде чистого текста через провод.
Примечание: этот рабочий процесс больше не работает с GitLab 8.6.0 по мере удаления пароля по умолчанию.
Список изменений: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG#L205
Я только заметил это и поднял вопрос. Оставляя эту заметку здесь, надеюсь, кого-нибудь еще кого-нибудь спасут. Надеюсь, это решение, которое будет рассмотрено и отменено.
Обсуждение/выпуск: https://gitlab.com/gitlab-org/gitlab-ce/issues/1980