我在尝试自动更新我的kerberos机票。下面的脚本在终端中运行得很好,但是在Automator或Launchd中失败了。虽然expect命令返回时没有出现错误,但是没有获得新的票证。运行klist将返回一个空列表。
感谢你的任何帮助
#!/bin/sh
expect -c 'spawn /usr/bin/kinit USER@DOMAIN; expect "password:" { send "<password>" ; interact} '
if [ "$?" = "0" ]; then
echo "obtained kerberos token"
else
echo "couldn't obtain kerberos token"
exit 1;
fi
exit 0在launchd中运行,将记录以下输出
用户@域的密码: 获得kerberos令牌
通过在send命令之后添加一些超时来解决
expect -c 'spawn /usr/bin/kinit USER@DOMAIN; expect "password:" { send "<password>" ; interact}; sleep 5 '注意:正如Samson在他的评论中提到的,在脚本文件中使用密码是一个糟糕的解决方案。我只用它做测试。在kerberos中使用key选项卡是正确的方法。
发布于 2016-02-20 22:19:48
在expect命令中添加超时对我有效。
发布于 2016-02-21 15:04:05
将硬编码的明文密码填充到命令提示符中是要做的一件事。为什么首先使用Kerberos身份验证??
在后台创建Kerberos的预期方法是使用keytab (即包含加密的密码“散列”的文件)。
krb5.conf以获得预期/支持的加密列表(例如aes256-cts-hmac-sha1-96、rc4-hmac)ktutil实用工具创建keytab (请先阅读教程,这些命令很不直观)kinit -kt /some/path/to/mykt.keytab进行测试https://stackoverflow.com/questions/35524485
复制相似问题