Porque al detener un servicio systemctl, el estatus me da "failed"?

Iniciado por Drakaris, 4 Febrero 2020, 23:52 PM

0 Miembros y 1 Visitante están viendo este tema.

Drakaris

Hola, estoy haciendo un servicio linux,sobre prevención de ataques de fuerza bruta por ssh. Lo tengo todo finalizado.

Solamente me hace falta crear el servicio y un script para añadirlo en /etc/init.d/ y configurarlo (/etc/rc?.d/) para que al inicar el equipo, se inicie.

Creo el servicio, creando un archivo con extension .service en /etc/systemd/system/sshield.service


[Unit]
Description=Service for protect attacks of brute force ssh's

[Service]
Type=simple
ExecStart=/etc/sshield/sshield.sh
ExecStop=/etc/sshield/sshield.sh stop
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target


Le especifico que el tipo de proceso es en segundo plano:

Type=simple

Ejecuto el servicio en segundo plano:

ExecStart=/etc/sshield/sshield.sh

Especifico el script para detener el servicio:

ExecStop=/etc/sshield/sshield.sh stop


el problema esta en la detención del servicio, le especifico el mismo script pero pasandole un argumento "stop".

En el script sshield.sh, hay un condicional filtrando el argumento y si existe cuyo argumento, matará el proceso.

if [[ $1 == "stop" ]];then
       kill -9 $$
fi


El problema que creo que es, es que estoy matando cuyo proceso y el systemctl al ver que el proceso fue detenido por la señal SIGKILL pues lo detecta como "failed" cuando se hace un status (systemctl status sshield)
IMAGEN: https://drive.google.com/file/d/1i0QVUjnFRzL3nlGjLqs1khXANPZowV_b/view?usp=sharing

Normalmente que señal se le envia a un servicio para detenerlo?

Gracias

Y. Este método para detener el servicio, se consideraría correcto?
Lo increible, no es lo que ves, sino como es