Rendez-vous sur Arrakis, Le site perso d'un hacker libriste curieux crêpophile étourdi
Le 19/06/2019 à 15:43 dans /Logiciel-libre/OpenBSD/

Créer un initscript sous OpenBSD : vilain et rcctl

Vous vous souvenez de "vilain", un outil qui surveille les logs de votre serveur afin de mettre sur liste noire d'éventuels pirates en temps réel ? Jusqu'à présent, pour le lancer au démarrage, je conseillais l'utilisation du fichier /etc/rc.local qui permet d'exécuter n'importe quelle commande au démarrage. De plus, la mise en arrière-plan de vilain était gérée par tmux.
Ça fonctionnait bien, mais je voulais quelque chose de plus simple pour faciliter l'installation. L'utilisation d'un "init" script s'imposait.
Après des petites recherches, j'ai eu l'excellente surprise de voir que c'est très facile à mettre en place sous OpenBSD. Ceux qui pensent encore qu'OpenBSD est compliqué sont bien loin de la réalité. Ha ha, je me marre quand je repense aux initscript sous debian, et maintenant le bazar que c'est avec systemd !

Comme d'habitude, tout est documenté dans les pages man. J'ai commencé par regarder où se trouvent les scripts déjà existants : dans /etc/rd.c. Pas peu fier, je saisis alors la commande suivante :

$ man rc.d
 NAME
      rc.d – daemon control scripts
 
 SYNOPSIS
      /etc/rc.d/daemon [-df] action
 
 DESCRIPTION
      The /etc/rc.d directory contains shell scripts to start, stop, and
      reconfigure daemon programs (“services”).
 ...
 ...
 
 SEE ALSO
      rc(8), rc.conf(8), rc.subr(8), rcctl(8)
 

Cela me conduit à lire en diagonale (ouais hein, je ne suis pas fou, j'ai pas tout lu ^^) man rc.subr. J'en ai alors plus qu'assez pour écrire l'initscript de vilain que je place dans le fichier /etc/rc.d/vilain :

#!/bin/sh
 #
 # $OpenBSD: vilain.rc,v 1.0 2017/03/28 17:58:46 Thuban$
 
 daemon="/usr/local/bin/vilain"
 
 . /etc/rc.d/rc.subr
 
 pexp=".*vilain\.py"
 rc_reload=NO
 
 rc_cmd $1

C'est suffisant. Voici comment ça fonctionne :

Et voilà ! :P

On peut qui plus est modifier les fonctions de lancement, restart, stop, tout est décrit dans les manpages de façon très claire.

Reste plus qu'à activer et lancer vilain comme d'hab :

rcctl enable vilain
 rcctl start vilain

J'en ai profité pour ajouter un Makefile à vilain histoire de l'installer/désinstaller plus facilement.

OpenBSD est le meilleur de tous les Linux ! XD