Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import subprocess
- import getpass
- import os
- from app import mylogging as log
- def exists(path):
- """Test whether a path exists. Returns False for broken symbolic links"""
- try:
- st = os.stat(path)
- except os.error:
- return False
- return True
- def check_and_reinit_kticket():
- has_kticket = has_kerberos_ticket()
- if debug_klist:
- log.info("Has k-ticket or not: {}".format(has_kticket))
- if has_kticket:
- if debug_klist:
- log.info("Renewing K-ticket")
- reinit_kticket_func()
- pass
- else:
- reinit_kticket_func()
- def reinit_kticket_func():
- """
- USAGE.
- $ ktutil
- >> addent -password -p <user@server> -k 1 -e aes256-cts
- >> [Enter Password]
- >> wkt <userID>.keytab
- >> exit
- $ kinit <userID> -k -t <userID>.keytab
- $ klist
- >> Ticket cache: FILE:/tmp/krb5cc_928758424
- >> Default principal: <user@server>
- """
- try:
- # For service id's
- username = getpass.getuser()
- homedir = os.environ['HOME']
- # For personal id's enable below line
- user = username[:1]
- if user != 's':
- username = username.upper()
- username_lo = username.lower()
- keytab = "./" + username + ".keytab"
- command = "kinit " + username + " -kt " + keytab
- p1 = subprocess.Popen(command, shell=True) # USE THIS LINE FOR OWN UDER ID's
- p1.wait()
- log.info("Renewing Kticket (first try)")
- log.info(" - homedir : {0}".format(keytab))
- log.info(" - command : {0}".format(command))
- if not has_kerberos_ticket():
- keytab = "./" + username_lo + ".keytab"
- command = "kinit " + username + " -kt " + keytab
- p1 = subprocess.Popen(command, shell=True) # USE THIS LINE FOR OWN UDER ID's
- p1.wait()
- log.info("Renewing Kticket (second try)")
- log.info(" - homedir : {0}".format(keytab))
- log.info(" - command : {0}".format(command))
- if not has_kerberos_ticket():
- log.info("<Err> : Kinit: Failed to reinit kticket.", level='error')
- else:
- log.info("Done. All set")
- except Exception as e:
- log.info("<Err> Kinit: {0}".format(e), level='error')
- def has_kerberos_ticket():
- return True if subprocess.call(['klist', '-s']) == 0 else False
- if __name__ == "__main__":
- check_and_reinit_kticket()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement