I'm wondering - if anyone has an elegant solution to checking for a valid Kerberos ticket using Python. I'm not seeing anyway with kinit
or klist
that will show if a ticket is expired with a return code but I could run klist
and use a regex for the output .
Another option is to check exit status of 'klist -s' looks shorter and does not use krbV:
import subprocess
def has_kerberos_ticket():
return True if subprocess.call(['klist', '-s']) == 0 else False
You've got two options: the first is to use 'klist -s' and check the return code. The nicer option is to use the python-krbV module:
import krbV
def has_ticket():
'''
Checks to see if the user has a valid ticket.
'''
ctx = krbV.default_context()
cc = ctx.default_ccache()
try:
princ = cc.principal()
retval = True
except krbV.Krb5Error:
retval = False
return retval
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With