Citant http://launchd.info :
- ~/Library/LaunchAgents et /Library/LaunchAgents sont utilisés pour l'utilisateur actuellement connecté.
- /Library/LaunchDaemons sert à exécuter des choses en tant que Root ( o l'utilisateur spécifié avec l'option
UserName
) lorsque la machine démarre.
La clé (sans jeu de mots), cependant, est que les listes placées dans des fichiers /Library/LaunchDaemons/
doit être appartenant à par root:wheel
et devrait être chmod 644
.
Donc, juste parce que nrpe
crée une plist ne signifie pas qu'elle s'exécutera au démarrage sans connexion.
Je l'ai installé via brew
moi-même, et à la fin il est dit :
To have launchd start nrpe at login:
ln -sfv /usr/local/opt/nrpe/*.plist ~/Library/LaunchAgents
Then to load nrpe now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nrpe.plist
Je vous recommande de faire ceci, à la place :
chmod 644 /usr/local/opt/nrpe/homebrew.mxcl.nrpe.plist
sudo chown root:wheel /usr/local/opt/nrpe/homebrew.mxcl.nrpe.plist
sudo ln /usr/local/opt/nrpe/homebrew.mxcl.nrpe.plist /Library/LaunchDaemons/homebrew.mxcl.nrpe.plist
La première ligne s'assure que les permissions sont correctes.
La deuxième ligne permet de s'assurer que la propriété est correcte.
La troisième/dernière ligne lie le fichier de /usr/local/opt/nrpe/ à /Library/LaunchDaemons (notez l'absence d'une balise ~
ce qui est intentionnel).
Alors vous devez vous assurer que le fichier fait no existent dans ~/LaunchAgents, ce qui serait source de confusion :
rm -f "$HOME/Library/LaunchAgents/homebrew.mxcl.nrpe.plist"
Cela supprimera le fichier (s'il existe).
Important
En plaçant le fichier dans /Library/LaunchDaemons
vous direz nrpe
pour fonctionner comme root
. C'est peut-être une bonne ou une très mauvaise idée. Je ne connais pas la réponse à cette question. Cependant, pour être sûr, je ferais en sorte qu'il s'exécute explicitement en tant qu'utilisateur autre que Root à moins d'être absolument sûr. Aussi, j'utiliserais launchd
La capacité de l'entreprise à enregistrer les erreurs pour savoir si elle fonctionne correctement.
Pour ce faire, vous devrez modifier le plist mentionné ci-dessus. Voici le fichier tel qu'il est créé à l'origine, en date du 20/04/2016 :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.nrpe.agent</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/nrpe</string>
<string>-c</string>
<string>/usr/local/etc/nrpe.cfg</string>
<string>-d</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceDescription</key>
<string>Homebrew NRPE Agent</string>
<key>Debug</key>
<true/>
</dict>
</plist>
et voici la version que je recommande :
<?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>Debug</key>
<true/>
<key>GroupName</key>
<string>staff</string>
<key>InitGroups</key>
<true/>
<key>Label</key>
<string>org.nrpe.agent</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/nrpe</string>
<string>-c</string>
<string>/usr/local/etc/nrpe.cfg</string>
<string>-d</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceDescription</key>
<string>Homebrew NRPE Agent</string>
<key>StandardErrorPath</key>
<string>/tmp/org.nrpe.agent.stderr.log</string>
<key>StandardOutPath</key>
<string>/tmp/org.nrpe.agent.stdout.log</string>
<key>UserName</key>
<string>INSERTUSERNAMEHERE</string>
</dict>
</plist>
Remplacer INSERTUSERNAMEHERE
avec le nom d'utilisateur réel de l'utilisateur que vous voulez nrpe
pour fonctionner comme.
Déprécié
Notez que selon LaunchControl (qui est la meilleure application existante pour gérer les listes de diffusion de launchd), le fichier Debug
est obsolète pour OS X 10.10 et sera ignorée.
Redémarrer
Une fois le fichier en place, la meilleure façon de le tester sera de redémarrer le système et de ne PAS se connecter à la console. Au lieu de cela, une fois le processus de démarrage terminé, connectez-vous via ssh
et assurez-vous que le processus est en cours d'exécution, puis vérifiez les deux fichiers journaux pour voir ce que vous y voyez, le cas échéant.
J'espère que cela vous aidera.
ps - dépensez 10 $ sur LaunchControl . C'est une excellente application. Il n'y a pas de code d'enregistrement, donc vous n'avez pas besoin de vous enregistrer. ont pour le payer, mais vous devez le faire car le développeur vous fait confiance si vous utilisez l'application.
0 votes
Cherchez-vous de l'aide pour utiliser un outil comme LaunchCenter pour créer un plist afin que launchd exécute le travail ou simplement des instructions pour définir un fichier script à exécuter comme élément de démarrage et faire en sorte qu'un utilisateur se connecte au Mac lorsqu'il démarre et verrouille ensuite l'écran ?
0 votes
Salut @bmike, nrpe installe un plist, donc c'est juste le lancement. Comme la boîte a un trousseau de clés FileVault, les connexions automatiques ne sont pas possibles.
0 votes
Aah. Il faut donc modifier le script de démarrage pour qu'il lise le mot de passe à partir de la balise
security
binaire et y stocker des choses ou encore automatiser des choses à l'aide deexpect
?0 votes
Heh @bmike ; je ne sais pas ce que j'ai besoin de savoir sur MacOS/X. Au pays de Linux (ma maison ;}), les services (démons) fonctionnent très bien sans que personne n'ait à se connecter ou à démarrer les choses avec un mot de passe. Il semble que ce soit possible sur MacOS/X aussi, par exemple en voyant que je peux me connecter à la chose sans interaction humaine préalable après un redémarrage.