Как я могу периодически запускать команду оболочки с помощью агентов запуска в Mac OS X?

1

В нашей компании есть система единого входа Kerberos. Это означает, что я могу просто набрать kinit user@DOMAINв терминале, а затем я могу получить доступ ко всем ИТ-ресурсам, таким как файловые серверы, внутренние вики, svn-сервер и т. Д.

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

Есть ли способ выполнить эту команду автоматически при запуске компьютера и каждые десять часов после этого?

Я провел некоторое исследование, и я предполагаю, что правильный способ сделать это - использовать агент запуска, потому что команда должна выполняться от имени текущего пользователя (для kinit требуется пароль из цепочки для ключей).

Я попытался использовать следующий файл агента запуска, но он не работает должным образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>net.jabakobob.auto-kinit</string>
    <key>OnDemand</key>
    <true/>
    <key>RunAtLoad</key>
    <false/>
    <key>UserName</key>
    <string>user</string>
    <key>Program</key>
    <string>/usr/bin/kinit</string>
    <key>ProgramArguments</key>
    <array>
        <string>user@DOMAIN</string>
    </array>
    <key>StartInterval</key>
    <integer>10800</integer>
</dict>
</plist>

Я не знаю, почему этот агент запуска не работает, и я понятия не имею, как его отладить. Есть идеи?

Якоб Эггер
источник

Ответы:

0

/Library/LaunchAgents/привязаны к отдельным пользователям, так как /Library/LaunchDaemons/привязаны к машине в целом. После загрузки системы и запуска ядра /Library/LaunchDaemons/сначала загружаются найденные файлы списка свойств, так как это демон системного уровня.

Попробуйте вставить свой список /Library/LaunchDaemons/и посмотреть, работает ли он. Поскольку целью является запуск kinitпри загрузке, поэтому не должно иметь значения, загружен ли он на системном уровне.

Если это не работает, пожалуйста, ответьте здесь со своими выводами.

Tanmay
источник