Preciso verificar programaticamente se Set Date and Time automatically
está marcado ou não nas Preferências do sistema Mac.
Não encontrei nenhum arquivo .plist que continha essas informações. Alguém pode me dizer onde posso encontrá-las?
Preciso verificar programaticamente se Set Date and Time automatically
está marcado ou não nas Preferências do sistema Mac.
Não encontrei nenhum arquivo .plist que continha essas informações. Alguém pode me dizer onde posso encontrá-las?
Respostas:
O resultado final da caixa de seleção "Definir data e hora automaticamente" é que o daemon ntpd é iniciado pelo launchd.
Portanto, você pode verificar a presença do arquivo /var/run/ntpd.pid ou presumivelmente verificar se o ntpd está sendo executado como um processo. Isso é bom e bom para o site, mas sua segunda parte da pergunta sobre como recuperar programaticamente esse status é basicamente fora de tópico aqui.
Nós permitimos perguntas limitadas sobre programação de scripts AppleScript, Automator e shell. O escopo completo das perguntas do desenvolvedor (especialmente as novas restrições do OSX, como o sandboxing) ou as perguntas e respostas no nível do código sobre como programar são mais solicitadas em https://stackoverflow.com/ em vez de aqui.
Com isso fora do caminho - aqui está a história de fundo por que essa é realmente uma pergunta bastante complicada. O Launchd é responsável por iniciar e parar o daemon ntpd, mantendo o daemon quando você alterna essa opção e, em vez de carregar ou descarregar o arquivo de configuração para esse "trabalho", a ferramenta possui um arquivo plist de substituição interno que possui um status verdadeiro / falso para determinados trabalhos desabilitado, mesmo que eles devam executar normalmente. Quando você alterna a caixa de seleção Preferências do sistema em Data e hora, esse arquivo altera o valor da chave Desativado no final do arquivo para ser ou quando o tempo automático estiver desativado ou ativado (respectivamente) .:
Em /private/var/db/launchd.db/com.apple.launchd/overrides.plist
<key>org.ntp.ntpd</key>
<dict>
<key>Disabled</key>
<false/>
</dict>
Não conheço uma maneira puramente programática de obtê-lo, mas o systemsetup
comando pode fazê-lo:
$ systemsetup -getusingnetworktime
Network Time: On
Eu encontrei essa discussão nos fóruns de discussão da Apple. Ele descreve como obter o tempo na barra de menus, mas com ele também como chegar à lista programaticamente.
/Library/Preferences/.GlobalPreferences.plist