我想知道 - 如果有人有一个优雅的解决方案来检查使用Python的有效Kerberos票证。我没有看到kinit
或klist
,如果票证已过期并返回代码,但我可以运行klist
并使用正则表达式输出。
答案 0 :(得分:7)
另一种选择是检查' klist -s'的退出状态。 看起来更短,不使用krbV:
import subprocess
def has_kerberos_ticket():
return True if subprocess.call(['klist', '-s']) == 0 else False
答案 1 :(得分:2)
你有两个选择:第一个是使用'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