python 重置Jira登录失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 重置Jira登录失败相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python3
import requests, re
from jira.client import JIRA

# Once in a while, jira api users are being blocked by jira.
# The reason is still unknown.
# Since atlassian hasn't a solution for this annoying behaviour that does not require a restart of the jira server,
# i wrote a small script, that will reset the "failed login attempts" of my api user.

# jira user credentials (maybe you should outsource these information in a seperate secure file)
jira_url = "https://jiraserver.exampledomain.com"
jira_api_user = "example_api_user"
jira_api_pass = "example_api_user_pass"
jira_admin_user = "example_admin_user"
jira_admin_pass = "example_admin_user_pass"

EXITCODE = 0


def conntect(host, user, a_pass):
        global EXITCODE
        try:
                jira = JIRA(options={'server': host}, basic_auth=(user, a_pass), max_retries=1)
                return True
        except:
                EXITCODE = 1
                return False

def reset_failed_login(host, admin_user, admin_pass, api_user):
        try:
                s = requests.session()
                headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}
                r = s.get(host)
                r = s.post(host+"/login.jsp", data = {'os_username':admin_user, 'os_password':admin_pass, 'login':'Log In'})
                r = s.post(host+"/secure/admin/user/UserBrowser.jspa", data = {'os_username':admin_user, 'os_password':admin_pass, 'login':'Log In'})
                r = s.post(host+"/secure/admin/WebSudoAuthenticate.jspa", data = {'webSudoPassword':admin_pass, 'webSudoDestination':'/secure/admin/user/UserBrowser.jspa', 'webSudoIsPost':'false'})
                req = host+'/secure/admin/user/ResetFailedLoginCount.jspa?atl_token='+s.cookies.get_dict()['atlassian.xsrf.token']+'&name='+api_user+'&returnUrl=%2Fsecure%2Fadmin%2Fuser%2FUserBrowser.jspa'
                r = s.post(req, data = {'webSudoPassword':admin_pass, 'webSudoDestination':'/secure/admin/user/UserBrowser.jspa', 'webSudoIsPost':'false'})
                print("x")
                print(r.request.headers['Cookie'])
                print(r.headers)
                return True
        except Exception as ex:
                print(ex)
                print("Something really bad happened! So sorry!")
                return False


if not conntect(jira_url, jira_api_user, jira_api_pass):
        if reset_failed_login(jira_url, jira_admin_user, jira_admin_pass, jira_api_user):
                if conntect(jira_url, jira_api_user, jira_api_pass):
                        print("successful")
                        EXITCODE = 0
        else:
                print("failed")
                EXITCODE = 1
else:
        print("No need to reset!")
        EXITCODE = 0

exit(EXITCODE)

以上是关于python 重置Jira登录失败的主要内容,如果未能解决你的问题,请参考以下文章

关于詹金斯工作失败的JIRA问题

python实现登录密码重置简易操作

带有 python 的 Jira API 在有效凭据上返回错误 401

Python-分角色登录界面(tkinterpymysql)

Python-分角色登录界面(tkinterpymysql)

如何在 Jira 中为 Bamboo 上的失败构建自动创建缺陷?