Come automatizzare launchctl / restart un demone

2

Su OSX 10.10 ho creato un file plist in / Library / LaunchDaemons / per avviare all'avvio una connessione OpenVPN. Tuttavia ho riscontrato problemi con il DNS passando da un'interfaccia internet a un'altra (come la rete WiFi to LAN) e ho pensato che dovevo riavviare il mio daemon OpenVPN con launchctl per risolverlo.

Ma con questo metodo ho bisogno di andare su una console, digitare un comando mostruoso di launchctl con sudo e, ovviamente, digitare la mia password amministratore.

Questo processo di scrittura può essere automatizzato?

Modifica

Grazie per la risposta generale @bmike che aprirà nuovi orizzonti e @Graham Miln anche se non amo AppleScript, ma come @Mark ha richiesto il mio file .plist :

<?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>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>net.openvpnd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/openvpn</string>
        <string>/a/path/to/file.ext</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>SuccessfullExit</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/Library/Logs/ovpnerr.log</string>
    <key>StandardOutPath</key>
    <string>/Library/Logs/ovpn.log</string>
    <key>EnvironmentVariables</key>
    <dict>
      <key>PATH</key>
      <string>/usr/sbin:/another/path</string>
    </dict>
</dict>
</plist>
    
posta PaulCo 29.11.2016 - 11:53
fonte

2 risposte

1

Potresti automatizzare questo processo usando script di shell ... con i privilegi di amministratore .

do shell script "command" user name "username" password "pass" with administrator privileges

L'AppleScript può essere salvato come un'applicazione e lanciato come necessario.

Per evitare di dover incorporare credenziali di amministratore all'interno di AppleScript, ometti i parametri user name e password . Senza questi parametri, ti verrà richiesto di inserire le tue credenziali ogni volta.

Per evitare di dover eseguire l'autenticazione ogni volta, evitando allo stesso tempo le credenziali incorporate, puoi indagare sull'archiviazione delle credenziali nel tuo portachiavi locale e aggiungere l'applicazione AppleScript all'elenco Controllo accesso tramite Keychain Access.app.

    
risposta data 29.11.2016 - 13:53
fonte
0

La prima cosa da automatizzare è usare un alias di shell o scrivere uno script shell / Python per ridurre la digitazione. Se si sceglie uno script, è possibile aggiungerlo al file sudoers in modo che la password dell'amministratore non sia necessaria per tale script.

Il prossimo passo sarebbe qualcosa come i fastscript o le app LaunchBar per usare un tasto di scelta rapida per attivare lo script. Anche gli strumenti di automazione di Apple funzionerebbero. Ci sono dozzine di modi per migliorarlo o automatizzarlo, ma gli strumenti hanno una curva di apprendimento da usare correttamente.

risposta data 29.11.2016 - 13:02
fonte

Leggi altre domande sui tag