Cómo automatizar launchctl / restart un daemon

2

En OSX 10.10 creé un archivo plist en / Library / LaunchDaemons / para comenzar al iniciar una conexión OpenVPN. Sin embargo, encontré problemas de DNS al pasar de una interfaz de Internet a otra (como WiFi a la red LAN) y pensé que necesitaba reiniciar mi demonio OpenVPN con launchctl para solucionarlo.

Pero con este método necesito ir a una consola, escribir un comando monstruoso de launchctl con sudo y, por supuesto, escribir mi contraseña de administrador.

¿Se puede automatizar este proceso de escritura?

Editar

Gracias por la respuesta general de @bmike que abrirá nuevos horizontes y @Graham Miln, aunque no me gusta AppleScript, pero como @Mark solicitó, aquí está mi archivo .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>
    
pregunta PaulCo 29.11.2016 - 11:53

2 respuestas

1

Puede automatizar este proceso utilizando script de shell de AppleScript con privilegios de administrador comando.

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

El AppleScript puede guardarse como una aplicación y lanzarse según sea necesario.

Para evitar la necesidad de incrustar credenciales de administrador en AppleScript, omita los parámetros user name y password . Sin estos parámetros, se le solicitará que ingrese sus credenciales cada vez.

Para evitar la necesidad de autenticarse cada vez, al tiempo que evita las credenciales integradas, puede investigar el almacenamiento de las credenciales en su Llavero local y agregar su aplicación AppleScript a la lista Control de acceso a través de Llavero Access.app.

    
respondido por el Graham Miln 29.11.2016 - 13:53
0

Lo primero que se debe automatizar es usar un alias de shell o escribir un script de shell / Python para reducir la escritura. Si elige un script, puede agregarlo al archivo sudoers para que no se necesite la contraseña de administrador para ese script.

Lo siguiente sería algo así como fastscripts o aplicaciones LaunchBar para usar una tecla de acceso directo para activar su script. Las herramientas de automatización de Apple también funcionarían. Hay docenas de formas de mejorar o automatizar esto, pero las herramientas tienen una curva de aprendizaje para usar correctamente.

respondido por el bmike 29.11.2016 - 13:02

Lea otras preguntas en las etiquetas