He instalado sshguard usando Homebrew en mi máquina Mac OS X, pero ahora me gustaría que sshguard se inicie automáticamente cuando se inicie el sistema.
He intentado dos enfoques. En primer lugar, he intentado crear una carpeta en / Library / StartupItems llamada sshguard, y he creado un archivo StartupParameters.plist estándar junto con un archivo de script de shell bash llamado sshguard. Sin embargo, cuando reinicié mi máquina, sshguard nunca se estaba ejecutando (utilicé ps -ax | grep sshguard
verificar).
El segundo enfoque fue crear un archivo llamado net.sshguard.sshguard en / Library / LaunchDaemons / con el siguiente XML:
<?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>KeepAlive</key>
<true/>
<key>Label</key>
<string>net.sshguard.sshguard</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/sbin/sshguard</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>matthew</string>
<key>WorkingDirectory</key>
<string>/usr/local/sbin</string>
</dict>
</plist>
Ahora cuando corro launchctl load -w /Library/LaunchDaemons/net.sshguard.sshguard.plist
que parece instalar el script OK como launchctl list
muestra que el script Daemon está instalado. Entonces corro launchctl start net.sshguard.sshguard
y todo parece estar funcionando.
Sin embargo, cuando corro ps -ax | grep sshguard
Puedo ver que sshguard no se está ejecutando realmente. También he intentado reiniciar, y cuando corro launchctl list
sshguard no está en la lista.
Si ejecuto sshguard en modo de depuración SSHGUARD_DEBUG=true /usr/local/sbin/sshguard
Parece que funciona bien.
Y he comprobado los permisos de net.sshguard.sshguard.plist y son los mismos que los otros archivos de trabajo, efectivamente 775.
¿Puede alguien ayudarme a recomendarme cómo hacer que sshguard se inicie automáticamente en una Mac?
Gracias, Mate
He utilizado este enfoque de baja tecnología y muy poco OS-X para iniciar demonios en el arranque de las máquinas OS X.
Primero crea un script que inicie tu demonio por ti, guárdalo en
/usr/local/sbin/
. Por ejemplo:Asegúrate de que el script sea ejecutable:
Prueba de que funciona desde la línea de comando así:
Y ahora coloque una entrada en el crontab del usuario raíz que se ejecuta en el reinicio del sistema:
Debería comenzar con el arranque del sistema ahora sin tener que pasar por todas esas cosas de Launchd para que esto suceda.
fuente
sudo mail
para leer el buzón de correo de la raíz.Parece que no estás haciendo nada malo con tu
launchd
lista de propiedades (cuando puede hacer que funcione,launchd
es la mejor manera de hacer este tipo de cosas en Mac OS X, por cierto), pero aquí hay un par de cosas para verificar:Hace usuario
matthew
tener los permisos necesarios para el directorio de trabajo (/usr/local/sbin
) (al menos, lea y ejecute, posiblemente escriba si algo se envía al directorio de trabajo)? Además, si estásMientras estamos en esto, ¿por qué está configurando el directorio de trabajo para
/usr/local/sbin
? Este es el directorio donde se ejecutará el programa. en . Esto hace no Es necesario que sea el mismo directorio que se ejecutará el programa. desde , dado que has especificado la ruta completa. A menos que sepa que el programa va a manipular los archivos en ubicaciones relacionadas con su directorio de trabajo actual (la mayoría de los demonios no lo hacen, los directorios de trabajo son principalmente un soplo para los humanos pequeños), probablemente no necesite configurar esto en absoluto.¿Has echado un vistazo a la salida de
sudo launchctl list net.sshguard.sshguard
? Esto debería, como mínimo, darle el estado de salida de sshguard, que puede ayudarlo a descubrir por qué está saliendo.Es
sshguard
¿Uno de estos programas de bifurcación y salida que lanza un demonio en segundo plano y luego lo regresa a su terminal? Si es así, no puedes usarlo (directamente) con elKeepAlive
llave - cuando sale,launchd
piensa que ha dejado de funcionar e intenta iniciarlo de nuevo, lo cual, dependiendo de cómosshguard
maneja esto podría causar problemas. Sisshguard
es fork-then-exit, y puede averiguar cómo le indica al fork que es el demonio real (un parámetro extra, o un comando ligeramente diferente, por ejemplo) que lo use directamente conlaunchd
. Si no puedes, no uses elKeepAlive
llave.Finalmente, intente configurar las cosas con una GUI. Solía recomendar Lingon aquí, pero ha llegado a todas las Mac-App-Store-we-want- £ 3. Sin embargo, es posible que pueda encontrar una de las versiones anteriores o una alternativa a través de Internet. Se asegurará de que no haya escrito nada incorrecto y le permitirá estar seguro de que no ha colocado algo en el lugar equivocado (lo que sugiere la falta de carga automática en el reinicio, aunque lo que describe hacer parece correcto yo).
fuente