aboutsummaryrefslogtreecommitdiff
path: root/control/set-jenkins-user-passwd
blob: 2c1607dd67d85d25527b16428263011ed18fc13f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python
#
# Script to change user password in Jenkins user config XML file.
#

import sys
import os
import hashlib

from lxml import etree


tree = etree.fromstring(open(sys.argv[1]).read())
hash_tag = tree.xpath("/user/properties/hudson.security.HudsonPrivateSecurityRealm_-Details/passwordHash")[0]
salt, old_hash = hash_tag.text.split(":")

new_passwd = open(sys.argv[2]).read()
h = hashlib.sha256()
h.update("%s{%s}" % (new_passwd, salt))
hash_tag.text = "%s:%s" % (salt, h.hexdigest())
f = open(sys.argv[1] + ".new", "w")
f.write(etree.tostring(tree, xml_declaration=True, encoding='UTF-8'))
f.close()
os.rename(sys.argv[1], sys.argv[1] + ".old")
os.rename(sys.argv[1] + ".new", sys.argv[1])