Ejecute nrpe en el arranque sin un usuario conectado

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

Instalé Xcode, brew y nrpe a través de brew. Funciona bien como tal. No es sensato tener 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 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 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 todavía no se inicia automáticamente...

¿Está buscando ayuda para usar una herramienta como LaunchCenter para hacer una lista para ejecutar el trabajo o simplemente instrucciones para configurar un archivo de script para que se ejecute como elemento de inicio y hacer que un usuario inicie sesión en la Mac cuando se inicie y luego bloquee el ¿pantalla?
Hola @bmike, nrpe instala un plist, por lo que es solo el lanzamiento. Dado que la caja tiene un conjunto de llaveros de FileVault, no es posible realizar inicios de sesión automáticos.
Aah. ¿Entonces necesita modificar la secuencia de comandos de inicio para leer la contraseña del securitybinario y almacenar cosas allí o automatizar las cosas con expect?
Je @bmike; No sé lo que necesito saber sobre MacOS/X. En la tierra de Linux (mi hogar;}) los servicios (demonios) funcionan bien sin que nadie tenga que iniciar sesión o tener que iniciar las cosas con una contraseña. Parece ser posible en MacOS/X, también, por ejemplo, viendo que puedo ssh a la cosa sin interacción humana previa después de un reinicio.

Respuestas (1)

Citando http://launchd.info :

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

Sin embargo, la clave (sin juego de palabras) es que los plists colocados en /Library/LaunchDaemons/deben ser propiedad de root:wheely deben ser chmod 644.

Entonces, solo porque nrpecrea un plist no significa que se ejecutará en el arranque sin iniciar sesión.

Lo instalé brewyo 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 recomendaría que hicieras 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 desde /usr/local/opt/nrpe/ a /Library/LaunchDaemons (tenga en cuenta la ausencia de un ~que es intencional).

Luego, debe asegurarse de que el archivo no exista 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, /Library/LaunchDaemonsse le indicará nrpeque 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 ejecutara explícitamente como un usuario que no fuera root, a menos que estuviera absolutamente seguro. Además, usaría launchdla capacidad de registrar errores para ver si funciona bien.

Para hacer esto, deberá editar el plist mencionado anteriormente. Aquí está el archivo tal como se creó originalmente, a partir del 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>

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>

Reemplace INSERTUSERNAMEHEREcon el nombre de usuario real del usuario nrpecon el que desea ejecutar.

Obsoleto

Tenga en cuenta que, de acuerdo con LaunchControl (que es la mejor aplicación que existe para administrar plists de lanzamiento), la Debugclave está obsoleta 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, una vez que se complete el proceso de arranque, inicie sesión a través de sshy asegúrese de que el proceso se está ejecutando, y verifique los dos archivos de registro para ver qué ve allí, si es que ve algo.

Espero que esto ayude.

pd: gaste $ 10 en LaunchControl . Es una gran aplicación. No hay un código de registro, por lo que no tiene que pagarlo, pero debería hacerlo porque el desarrollador confía en usted si usa la aplicación.

muchas gracias; Había hecho el movimiento y el enlace antes de esta publicación, pero el inicio automático seguía fallando en el arranque. Con el plist modificado, todo marcha sobre ruedas. :}
Alegra oírlo
¡Gracias por la respuesta! Me ayudó a depurar. Sin embargo, nrpe.cfg configura al usuario con nrpe_user y nrpe_group y ese método parece ser la opción preferible, en lugar de editar el plist con ese valor. Recomiendo a los lectores que sigan la primera mitad de esta respuesta y luego configuren el usuario/grupo en nrpe.cfg.