我想知道 – 如果有人有一个优雅的解决scheme,使用Python检查有效的Kerberos票证。 我不知道kinit
或klist
会显示票证是否已过期,但我可以运行klist
并使用正则expression式输出。
你有两个选择:第一个是使用“klist -s”并检查返回代码。 更好的选择是使用python-krbV模块:
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
另一个选择是检查'klist -s'看起来更短的退出状态,并且不使用krbV:
import subprocess def has_kerberos_ticket(): return True if subprocess.call(['klist', '-s']) == 0 else False