Como posso executar periodicamente um comando shell usando agentes de ativação no Mac OS X?

1

Temos um sistema de login único do Kerberos em nossa empresa. Isso significa que eu posso apenas digitar kinit user@DOMAIN no terminal, e então eu posso acessar todos os recursos de TI, como servidores de arquivos, wiki interno, servidor svn, etc.

O problema é que eu permaneço logado por apenas 10 horas, então eu preciso executar kinit todas as manhãs quando eu acordar o meu computador do sono, e toda vez que eu reiniciar o computador.

Existe uma maneira de executar este comando automaticamente quando eu inicio o computador, e a cada dez horas depois disso?

Eu fiz algumas pesquisas e presumo que a maneira correta de fazer isso é usar um agente de inicialização, porque o comando deve ser executado como o usuário atual (o kinit precisa da senha do keychain).

Eu tentei usar o seguinte arquivo do agente de lançamento, mas não funciona como esperado:

<?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>

Eu não sei porque este agente de lançamento não funciona, e não tenho idéia de como depurá-lo. Alguma idéia?

    
por Jakob Egger 28.03.2012 / 10:03

1 resposta

0

/Library/LaunchAgents/ estão vinculados a usuários individuais onde, como /Library/LaunchDaemons/ , estão vinculados à máquina como um todo. Depois que o sistema é inicializado e o kernel está em execução, os arquivos de lista de propriedades encontrados em /Library/LaunchDaemons/ são carregados primeiro, pois são daemon de nível de sistema.

Tente colocar seu plist em /Library/LaunchDaemons/ e veja se funciona. Como o objetivo é executar kinit na inicialização, não importa se ele é carregado no nível do sistema.

Se não funcionar, responda aqui com suas descobertas.

    
por 16.10.2012 / 14:35