2 votes

Exécuter nrpe au démarrage sans utilisateur connecté

J'utilise un Mac mini avec une application serveur. (El Capitan 10.11.4 & Server.app 5.1)

Installé Xcode, brew, et nrpe via brew. Cela fonctionne bien en tant que tel. Il n'est pas raisonnable de devoir y accéder à distance et de s'y connecter juste pour que la surveillance soit opérationnelle. Étant donné que FileVault est actif, se connecter automatiquement n'est pas une option.

Comment faire pour que nrpe démarre si la machine est redémarrée sans interaction ?

EDIT1 : OK, je n'ai pas trouvé de moyen facile de faire fonctionner cette fonction ; j'ai donc désactivé filevault après une brève discussion avec l'équipe. Mais au démarrage (et avec une connexion automatique), nrpe ne démarre toujours pas automatiquement ...

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

1voto

moodforaday Points 2633

Citant http://launchd.info :

  1. ~/Library/LaunchAgents et /Library/LaunchAgents sont utilisés pour l'utilisateur actuellement connecté.
  2. /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

Merci beaucoup ; j'avais fait le déplacement et le lien avant ce post, mais le démarrage automatique échouait toujours au démarrage. Avec la plist modifiée, tout va bien :}

0 votes

Heureux de l'entendre

0 votes

Merci pour la réponse ! Elle m'a aidé à déboguer. Cependant, nrpe.cfg définit l'utilisateur avec nrpe_user et nrpe_group et cette méthode semble être le choix préférable, au lieu de modifier la plist avec cette valeur. Je recommande aux lecteurs de suivre la première moitié de cette réponse, puis de définir l'utilisateur/groupe dans nrpe.cfg.

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