Ejecutar nrpe en el arranque sin un usuario registrado

3

Ejecutando una Mac mini con aplicación de servidor. (El Capitán 10.11.4 & Server.app 5.1)

Xcode instalado, brew y nrpe a través de brew. Funciona bien como tal. No es sensato tener que usar un escritorio remoto e iniciar sesión solo para que el monitoreo esté en funcionamiento. Dado que FileVault está activo, iniciar sesión automáticamente no es una opción.

¿Cómo hago que nrpe start si la máquina se reinicia sin interacción?

EDIT1: OK, no pude encontrar una manera fácil de hacer que esto funcione; Así que deshabilité Filevault después de una breve discusión con el equipo. Pero en el arranque (y con un inicio de sesión automático) nrpe aún no se inicia automáticamente ...

    
pregunta tink 18.04.2016 - 21:40

1 respuesta

2

Citando enlace :

  1. ~ / Library / LaunchAgents y / Library / LaunchAgents se utilizan para el usuario que ha iniciado sesión actualmente.
  2. / Library / LaunchDaemons es para ejecutar cosas como root ( o el usuario especificado con la tecla UserName ) cuando la máquina arranca.

La clave (sin juego de palabras), sin embargo, es que los plists colocados en /Library/LaunchDaemons/ deben ser poseídos por root:wheel y deben ser chmod 644 .

Entonces, solo porque nrpe crea un plist no significa que se ejecutará en el arranque sin inicio de sesión.

Lo instalé a través de brew , y al final dice:

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

Le recomendaría que hiciera esto, en su lugar:

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 primera línea se asegura de que los permisos sean correctos.

La segunda línea se asegura de que la propiedad sea correcta

La tercera / última línea vincula el archivo de / usr / local / opt / nrpe / a / Library / LaunchDaemons (note la ausencia de un ~ que es intencional).

Luego debes asegurarte de que el archivo no existe en ~ / LaunchAgents, lo que sería confuso:

rm -f "$HOME/Library/LaunchAgents/homebrew.mxcl.nrpe.plist"

Eso eliminará el archivo (si existe).

Importante

Al colocar el archivo en /Library/LaunchDaemons , le dirá a nrpe que se ejecute como root . Eso puede estar bien, o puede ser una muy mala idea. No sé la respuesta a esa pregunta. Sin embargo, para estar seguro, haría que se ejecute explícitamente como un usuario otro que root, a menos que estuviera absolutamente seguro. Además, usaría la capacidad de launchd para registrar errores para ver si se ejecuta correctamente.

Para hacer esto, deberá editar el plist mencionado anteriormente. Aquí está el archivo como se creó originalmente, a partir del 2016/04/20:

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

y aquí está la versión que recomendaría:

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

Reemplaza INSERTUSERNAMEHERE con el nombre de usuario real del usuario con el que quieres que nrpe se ejecute como.

En desuso

Tenga en cuenta que de acuerdo con LaunchControl (que es la mejor aplicación para administrar plistas de launchd) el Debug La clave está en desuso para OS X 10.10 y se ignorará.

Reiniciar

Una vez que tenga el archivo en su lugar, la mejor manera de probarlo será reiniciar el sistema y NO iniciar sesión en la consola. En su lugar, después de que se complete el proceso de inicio, inicie sesión a través de ssh y asegúrese de que el proceso se está ejecutando, y verifique los dos archivos de registro para ver qué es lo que ve, si es que ve algo.

Espero que esto ayude.

ps: gasta $ 10 en LaunchControl . Es una gran aplicación. No hay un código de registro por lo que no tiene que tener para pagar, pero debe hacerlo porque el desarrollador confía en usted si usa la aplicación.

    
respondido por el TJ Luoma 20.04.2016 - 08:48

Lea otras preguntas en las etiquetas