En OSX 10.10, creé un archivo plist en /Library/LaunchDaemons/ para 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?
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 .plist
archivo:
<?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>
Puede automatizar este proceso usando el script do shell de AppleScript... con el comando de privilegios de administrador.
do shell script "command" user name "username" password "pass" with administrator privileges
El AppleScript se puede guardar como una aplicación y ejecutar 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 pedirá que ingrese sus credenciales cada vez.
Para evitar la necesidad de autenticarse cada vez, y al mismo tiempo evitar las credenciales incrustadas, puede investigar el almacenamiento de las credenciales en su llavero local y agregar su aplicación AppleScript a la lista de control de acceso a través de Keychain Access.app.
Lo primero que hay que automatizar es usar un alias de shell o escribir un script de shell/Python para reducir la escritura. Si elige una secuencia de comandos, puede agregarla al sudoers
archivo para que la contraseña de administrador no sea necesaria para esa secuencia de comandos.
El siguiente sería algo como fastscripts o aplicaciones LaunchBar para usar una tecla de acceso directo para activar su secuencia de comandos. 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 usarlas correctamente.
mmmmmm
bmike
klanomath
PabloCo