2 votos

Ejecutar nrpe en el arranque sin un usuario registrado

Funcionando con un Mac mini con aplicación de servidor. (El Capitan 10.11.4 y Server.app 5.1)

Instalado Xcode, brew, y nrpe a través de brew. Funciona bien como tal. No es sensato tener que hacer un escritorio remoto a él y entrar en él sólo para poner en marcha la monitorización. Dado que FileVault está activo, iniciar sesión automáticamente no es una opción.

¿Cómo puedo hacer que nrpe se inicie 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 desactivé 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 todavía no se inicia automáticamente ...

1voto

moodforaday Puntos 2633

Citando a http://launchd.info :

  1. ~/Library/LaunchAgents y /Library/LaunchAgents se utilizan para el usuario actualmente conectado.
  2. /Library/LaunchDaemons es para ejecutar cosas como Root ( o el usuario especificado con el UserName ) cuando la máquina arranca.

Sin embargo, la clave (no es un juego de palabras) es que las listas colocadas en /Library/LaunchDaemons/ debe ser propiedad por root:wheel y debe ser chmod 644 .

Así que, sólo porque nrpe crea un plist no significa que se ejecutará en el arranque sin iniciar sesión.

Lo instalé a través de brew a mí mismo, 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

Te recomiendo que hagas 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 asegura que los permisos son correctos.

La segunda línea asegura que la propiedad es correcta

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

Entonces hay que asegurarse de que el archivo hace no existen en ~/LaunchAgents, lo que sería confuso:

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

Esto eliminará el archivo (si existe).

Importante

Al colocar el archivo en /Library/LaunchDaemons le dirás a nrpe para 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 yo haría que se ejecutara explícitamente como usuario otros que Root a menos que esté absolutamente seguro. Además, utilizaría launchd La capacidad de registrar errores para ver si está funcionando bien.

Para ello tendrás que editar el plist mencionado anteriormente. Aquí está el archivo como se crea originalmente, a partir de 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 esta es la versión que yo 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>

Sustituir INSERTUSERNAMEHERE con el nombre de usuario real del usuario que desea nrpe para correr como.

Desaprobado

Tenga en cuenta que, según LaunchControl (que es la mejor aplicación que existe para gestionar los plists de launchd) el Debug está obsoleta para OS X 10.10 y será ignorada.

Reiniciar

Una vez que tenga el archivo en su lugar, la mejor manera de probarlo será reiniciar el sistema y NO entrar en la consola. En su lugar, después de que el proceso de arranque se haya completado, inicie sesión a través de ssh y asegúrese de que el proceso se está ejecutando, y compruebe los dos archivos de registro para ver qué, si algo, se ve allí.

Espero que esto ayude.

ps - gastar 10 dólares en LaunchControl . Es una gran aplicación. No hay código de registro para que no tienen pagar por ella, pero deberías hacerlo porque el desarrollador confía en que lo hagas si utilizas la aplicación.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X