Precisando abrir o script bash do OS X como via launchd IN em uma janela de terminal

0

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.

    
por realdannys 19.01.2016 / 22:57

1 resposta

0

Em vez de open Terminal , você pode invocar o arquivo binário do aplicativo diretamente (não o arquivo .app). O seguinte deve funcionar para o seu launchd. Observe que o Terminal será iniciado, executará o script e sairá. Dependendo das preferências do seu Terminal.app, a janela do terminal pode desaparecer imediatamente ou simplesmente deixar uma janela morta na tela com a saída do script.

<array>
<string>/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal</string>
<string>/Users/admin/first-boot.command</string>
</array>
    
por 20.01.2016 / 02:00