#!/usr/bin/python import socket import sys import pycurl import urllib DEBUG=True def change_password(hostname, user, old_password, new_password): url = 'https://%s/ipa/session/change_password' % hostname print "Perform password change on the IPA server URL: %s", url print "Change password for '%s'from '%s' to '%s'" % (user, old_password, new_password) request = { 'user': user, 'old_password': old_password, 'new_password': new_password, } request_data = urllib.urlencode(request, True) c = pycurl.Curl() c.setopt(pycurl.URL, url) c.setopt(pycurl.HTTPHEADER, [ "Content-Type: application/x-www-form-urlencoded", "Referer: %s" % url ] ) #set POST fields c.setopt(pycurl.POST, 1) c.setopt(pycurl.POSTFIELDS, request_data) c.setopt(pycurl.SSL_VERIFYPEER, False) if DEBUG: c.setopt(pycurl.VERBOSE, 1) c.perform() if __name__ == "__main__": if len(sys.argv) != 4: sys.exit('Usage: ./changepw.py USER OLD_PASSWORD NEW_PASSWORD') user=sys.argv[1] old_password=sys.argv[2] new_password=sys.argv[3] hostname=socket.gethostname() # use current hostname change_password(hostname, user, old_password, new_password)