Bash 如何测试是否需要kinit?

Bash 如何测试是否需要kinit?,bash,hadoop,kerberos,Bash,Hadoop,Kerberos,我想在我的.bashrc文件中添加一些内容,以便在需要时运行kinit。有没有办法测试我是否需要做kinit?大概是这样的: if [ kinitNeeded ]; do kinit; done kinitNeeded() { ??? } 您可以尝试klist-s。从手册页: “使klist以静默方式运行(不产生输出),但仍根据是否找到凭据缓存设置退出状态。如果klist找到凭据缓存,则退出状态为“0”;如果未找到凭据缓存或票证已过期,则退出状态为“1”。我找到了一个解决方案,但

我想在我的
.bashrc
文件中添加一些内容,以便在需要时运行
kinit
。有没有办法测试我是否需要做
kinit
?大概是这样的:

if [ kinitNeeded ]; 
    do kinit; 
done

kinitNeeded() { ??? }

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


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

我找到了一个解决方案,但这有点麻烦。”

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

我刚刚尝试了这个方法,
echo$?
给出了2的退出状态。@anthonybell@anthonybell您的解决方案不考虑过期票据。。您可以执行类似于
klist-s | echo$-gt 0
我在运行
kinit-s
时遇到错误:
kinit:option需要一个参数--“s”
@anthonybell您的操作系统和klist版本是什么?这不能解决票证过期的情况@tellisnz的答案确实如此。