如何测试是否需要kinit?

时间:2016-05-16 18:09:27

标签: bash hadoop kerberos

如果需要,我想在.bashrc文件中添加一些内容来运行kinit。有没有办法测试我是否需要kinit?像这样:

if [ kinitNeeded ]; 
    do kinit; 
done

kinitNeeded() { ??? }

3 个答案:

答案 0 :(得分:11)

您可以尝试klist -s。从手册页:

"导致klist以静默方式运行(不产生输出),但仍然根据是否找到凭证缓存来设置退出状态。如果klist找到凭证缓存,则退出状态为“0”;如果不找到凭证缓存,则退出状态为“1”,如果票证已过期,则退出状态为“#34;

答案 1 :(得分:1)

我找到了一个解决方案,但这有点像黑客攻击。

if [ `klist 2>&1 | grep -i 'No credentials' | wc -l` -gt 0 ]; then
    kinit
fi

答案 2 :(得分:0)

试试:

klist -s; echo $?

如果正常则返回0,否则返回1