Onde os dados de preferência de data e hora são salvos no Mac?

5

Preciso verificar programaticamente se Set Date and Time automaticallyestá 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?

Akbar
fonte
1
Suspeito que possa haver uma resposta melhor orientada a programadores para essa pergunta. Posso recomendar que você sinalize esta postagem e solicite a migração para o StackOverflow?
Jason SALAZ
@ JasonSalaz Isso seria fora de tópico no Stack Overflow.
Lri
As questões de programação / API / SDK não estão fora do tópico no Stack Overflow. "Preciso verificar programaticamente ", diz o OP.
achou
Suponho que a pergunta que faço primeiro seja ... Qual método você deseja usar para armazenar as informações e em que formato. Posso pensar em pelo menos duas maneiras de obter as informações usando o AppleScript, uma usando as funções de leitura de arquivo e plist e a segunda usando a própria interface AppleScript das Preferências do Sistema. O segundo método também pode fornecer um método para definir a opção, se não estiver definida, no entanto, não acredito que seja possível se a segurança no painel estiver ativada. Também não deve demorar muito para montar um script.
Stu Wilson
Estou muito tentado a editar isso para torná-lo mais dentro do escopo, mas muitos dos comentários pareceriam fora de lugar. Talvez eu possa responder para ajudar a esclarecer o que está sobre o assunto aqui e o que não é.
Bmike

Respostas:

1

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>
bmike
fonte
1

Não conheço uma maneira puramente programática de obtê-lo, mas o systemsetupcomando pode fazê-lo:

$ systemsetup -getusingnetworktime
Network Time: On
Gordon Davisson
fonte
Isso definirá o servidor NTP para o seu Mac "systemsetup -setnetworktimeserver <ntpserver>" e "systemsetup -getnetworktimeserver" para obter o servidor de horário atual.
Concede
0

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.

Michiel
fonte
Você pode adicionar mais informações à sua resposta? E adicionar o site como fonte?
Loïc Wolff
claro, sem problemas.
51311 Michiel
Obrigado pela sua resposta, mas o com.apple.GlobalPreferences.plist não existe na minha caixa em nenhum local da Biblioteca / Preferências
Akbar
1
Provavelmente porque o arquivo é chamado/Library/Preferences/.GlobalPreferences.plist
nohillside