Особый персонаж "!"и "@" в пароле и имени пользователя соответственно - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь отправить запросы. Post в Python, который имеет

username = "devoops123@mdf.nct.com"
password = "ChangemeinNv!"

Мой сценарий имеет

start_build_url = 'http://{0}/jenkins/job/{1}/job/{2}/buildWithParameters?token={3}&{4}'.format(
    jenkins_uri, folder_name, job_name, build_token, build_param)
r = requests.post(
    start_build_url, data={
        'username': 'auth_username','password': 'auth_pass'}
)

Я получаю 401 Authentication проблему при выполнении моего сценария

При передаче пароля в качестве аргумента в мой сценарий я попытался сделать следующее, но, похоже, ничего не помогло:

  • %21 вместо ! и %40 для @
  • Экранирование обоих специальных символов путем \
  • Заключение аргументов в " "

1 Ответ

0 голосов
/ 18 октября 2018

Jenkins ожидает, что вы отправите имя пользователя и пароль с помощью функции Обычная аутентификация HTTP.requests может обработать это изначально .См. Jenkins Удаление доступа к API Документация :

Когда ваш Jenkins защищен, вы можете использовать HTTP BASIC-аутентификацию для аутентификации удаленных запросов API.

Просто поместите имя пользователя и пароль в кортеж, передаваемый в качестве аргумента auth:

start_build_url = 'http://{0}/jenkins/job/{1}/job/{2}/buildWithParameters?token={3}&{4}'.format(
    jenkins_uri, folder_name, job_name, build_token, build_param)
r = requests.post(
    start_build_url, auth=(username, password),
)

Ни значения username, ни password не нужно экранировать, оставьтечто до requests беспокоиться за вас.

...