Я пытаюсь автоматизировать обновление билетов на kerberos. Сценарий ниже отлично работает в терминале, но, тем не менее, не работает в Automator или Launchd. Хотя команда expect возвращается без ошибок, новый билет не получен. работает Klist возвращает пустой списокlaunchd bash kinit not retrieve kerberos tickets
Любые оцененной помощь
#!/bin/sh
expect -c 'spawn /usr/bin/kinit [email protected]; expect "password:" { send "<password>" ; interact} '
if [ "$?" = "0" ]; then
echo "obtained kerberos token"
else
echo "couldn't obtain kerberos token"
exit 1;
fi
exit 0
работает в запуске программ следующий вывод регистрируется
пароля пользователя @ домен:
полученных Керберос фишки
решается путем добавления некоторого времени ожидания после команды отправки
expect -c 'spawn /usr/bin/kinit [email protected]; expect "password:" { send "<password>" ; interact}; sleep 5 '
примечание: Самсон упоминает в своем комментарии, имея пароль в файле сценария является плохим решением. Я использовал его только для тестирования. Использование ключевой вкладки - правильный способ сделать это в kerberos.
Создает ли ваш скрипт вывод при запуске launchd? если он скажет, что он получил токен и не знает? Пожалуйста, уточните свой вопрос. – jkdba
Я добавил вывод выше. Похоже, скрипт запускается, вводит пароль и успешно возвращается. однако никакой токен не получен. – Martin
Не могли бы вы добавить проверку на токен после успешного завершения и добавить его к выходу, чтобы увидеть, действительно ли он получает токен, но что-то происходит после факта? – jkdba