2 votes

Comment automatiser launchctl / redémarrer un démon

Sous OSX 10.10, j'ai créé un fichier plist dans /Library/LaunchDaemons/ pour lancer une connexion OpenVPN au démarrage. Cependant, j'ai rencontré des problèmes de DNS en passant d'une interface internet à une autre (comme le WiFi vers le réseau LAN) et j'ai pensé que je devais redémarrer mon démon OpenVPN avec launchctl pour résoudre le problème.

Mais avec cette méthode, je dois aller dans une console, taper une commande monstrueuse de launchctl avec sudo et, bien sûr, taper mon mot de passe d'administrateur.

Ce processus de saisie peut-il être automatisé ?

Modifier

Merci pour la réponse générale de @bmike qui ouvrira de nouveaux horizons et @Graham Miln bien que je ne sois pas fan d'AppleScript, mais comme @Mark l'a demandé voici mon .plist fichier :

<?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>

1 votes

Comme le daemon s'exécute en tant que Root, vous devriez l'exécuter en tant que Root - solution simple : mettre la longue commande dans un alias de shell script. Cependant, dans ce cas, je pense que le démon ne devrait être exécuté qu'en cas de besoin et ne redémarrer qu'en cas de besoin - nous devons donc voir votre plist pour suggérer ce qu'il devrait être.

0 votes

J'ai répondu à la question générale - "quelles sont les options d'automatisation existantes" - n'hésitez pas à poser une question complémentaire avec les détails spécifiques mentionnés par @mark si vous avez besoin d'aide pour laisser launchd gérer le démarrage et l'arrêt pour vous de manière systématique.

0 votes

Ça sent comme un Problème X-Y . Mieux vaut corriger votre configuration OpenVPN/DNS.

1voto

Graham Miln Points 39606

Vous pouvez automatiser ce processus en utilisant la fonction AppleScript do shell script avec des privilèges d'administrateur commandement.

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

L'AppleScript peut être enregistré en tant qu'application et lancé selon les besoins.

Pour éviter d'avoir à intégrer les informations d'identification de l'administrateur dans l'AppleScript, omettez l'attribut user name et password paramètres. Sans ces paramètres, vous serez invité à saisir vos informations d'identification à chaque fois.

Pour éviter d'avoir à s'authentifier à chaque fois, tout en évitant les informations d'identification intégrées, vous pouvez étudier la possibilité de stocker les informations d'identification dans votre trousseau local et d'ajouter votre application AppleScript à la liste de contrôle de l'application. Contrôle d'accès par l'intermédiaire de Keychain Access.app.

-1voto

Oskar Points 1242

La première chose à automatiser est d'utiliser un alias shell ou d'écrire un script shell/Python pour réduire la saisie. Si vous choisissez un script, vous pouvez l'ajouter à la commande sudoers afin que le mot de passe de l'administrateur ne soit pas nécessaire pour ce script.

La prochaine étape serait quelque chose comme fastscripts ou LaunchBar apps pour utiliser une touche de raccourci pour déclencher votre script. Les outils d'automatisation d'Apple fonctionneraient aussi. Il y a des dizaines de façons d'améliorer ou d'automatiser ceci, mais les outils ont une courbe d'apprentissage pour être utilisés correctement.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X