特殊字符 ”!”和密码分别为“ @”和用户名

时间:2018-10-18 20:43:14

标签: python python-2.7 jenkins python-requests

我正在尝试使用

的Python发送request.post
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代替!的{​​{1}}和%40
  • 通过@转义两个特殊字符
  • 将参数放在\

1 个答案:

答案 0 :(得分:3)

Jenkins希望您使用HTTP的Basic authentication功能发送用户名和密码。 requests可以handle this natively。参见Jenkins Remove access API documentation

  

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),
)

usernamepassword的值都不需要转义,请将其留给requests来为您担心。