Eu tenho um script longo e complexo que funciona bem, mas estou tentando automatizar meu processo de implantação e estou desconcertado neste momento.
Eu posso fazer o script rodar como um LaunchAgent sem problemas, mas é claro que acontece em segundo plano na inicialização. Então eu tenho uma pausa no início do script, onde posso pressionar qualquer botão se eu precisar interromper o script.
O problema é que preciso que o script seja aberto em uma janela do Terminal para que eu possa pressionar o botão para cancelar ou continuar. É aqui que meu problema começa.
O script tem muitos comandos sudo. Eu criei o abaixo de .plist
e posso carregá-lo manualmente muito bem. Ele funciona e carrega o script e tudo funciona. No entanto, ele não faz nada na inicialização e apenas sai com o código de erro 1 no Console.
Eu tentei colocá-lo em /Library/LaunchAgents
e /Library/LaunchDaemons
. Basicamente, ele precisa abrir a janela do terminal como root para que todos os comandos no script sejam executados como root sem a necessidade de inserir manualmente a senha.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.deecies.first</string>
<key>ProcessType</key>
<string>Interactive</string>
<key>ProgramArguments</key>
<array>
<string>open</string>
<string>-a</string>
<string>terminal</string>
<string>/Users/admin/first-boot.command</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Eu tentei especificar /usr/bin/open
e o caminho completo para Terminal.app
também, mas sem sucesso. Eu tentei adicionar primeiro a string sudo e /usr/bin/sudo
, mas nada também.
Eu consegui fazer com que uma janela do Terminal fosse aberta quando ela era colocada em /Library/LaunchAgents
, no entanto, ela não parece abrir o Terminal, ou o script, como root, pois recebo "permissão negada" para todos os comandos no script que requerem sudo.