2016-02-20 3 views
0

Я пытаюсь автоматизировать обновление билетов на 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.

+0

Создает ли ваш скрипт вывод при запуске launchd? если он скажет, что он получил токен и не знает? Пожалуйста, уточните свой вопрос. – jkdba

+0

Я добавил вывод выше. Похоже, скрипт запускается, вводит пароль и успешно возвращается. однако никакой токен не получен. – Martin

+0

Не могли бы вы добавить проверку на токен после успешного завершения и добавить его к выходу, чтобы увидеть, действительно ли он получает токен, но что-то происходит после факта? – jkdba

ответ

1

добавив таймаут к команде ожидать работал для меня

1

Фарш жестко запрограммированный, незашифрованным пароль в командной строке является зло, что нужно сделать. Зачем использовать аутентификацию Kerberos в первую очередь?

Ожидаемый способ создания Kerberos TGT в фоновом режиме состоит в использовании ключа (то есть файла, содержащего зашифрованный «хеш» пароля).

  1. проверить krb5.conf для списка ожидаемых/поддерживаемых кодировок (например aes256-cts-hmac-sha1-96, rc4-hmac)
  2. создать Keytab с ktutil утилитой (читать учебник первым, команд далеки от интуитивного)
  3. тест с kinit -kt /some/path/to/mykt.keytab
  4. ограничивают привилегии на файл Keytab, поскольку это позволило бы кто-нибудь войти в систему с учетной записью
+0

уверен. должен был упомянуть, что мой вопрос был только для тестирования. Переключается на вкладку клавиш между ними. возможно, было проще сразу, но все же хотелось, чтобы команда ожидания работала должным образом. – Martin

Смежные вопросы