Systemd support (activé par défaut, rollback sur init.d si pas dispo)
This commit is contained in:
112
check
112
check
@@ -65,30 +65,51 @@ function chercheLanceur()
|
|||||||
# On peut définir un tableau supplémentaire dans le fichier de configuration
|
# On peut définir un tableau supplémentaire dans le fichier de configuration
|
||||||
# Si le lanceur n'est pas défini dans le tableau, on renvoie le nom du
|
# Si le lanceur n'est pas défini dans le tableau, on renvoie le nom du
|
||||||
# processus
|
# processus
|
||||||
|
# Le deuxieme parametre est "start", "stop", "test"
|
||||||
|
startup=""
|
||||||
if [ $BASH_VERSINFO -ge 4 ]; then
|
if [ $BASH_VERSINFO -ge 4 ]; then
|
||||||
processus=$1
|
processus=$1
|
||||||
if [ -z ${lanceur["$processus"]} ]; then
|
if [ -z ${lanceur["$processus"]} ]; then
|
||||||
echo "$processus"
|
startup=$processus
|
||||||
else
|
else
|
||||||
echo ${lanceur["$processus"]}
|
startup=${lanceur["$processus"]}
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# Le Bash 3 ne supporte pas les tableaux associatifs. On retourne aux liens
|
# Le Bash 3 ne supporte pas les tableaux associatifs. On retourne aux liens
|
||||||
# symboliques
|
# symboliques
|
||||||
echo $1
|
startup=$1
|
||||||
|
fi
|
||||||
|
if [ "$2" == "test" ]; then
|
||||||
|
if [ -f "/lib/systemd/system/$startup.service" ]; then
|
||||||
|
echo "Lanceur Systemd lib"
|
||||||
|
elif [ -f "/etc/systemd/system/$startup.service" ]; then
|
||||||
|
echo "Lanceur Systemd etc"
|
||||||
|
elif [ -f "/etc/init.d/$startup" ]; then
|
||||||
|
echo "Lanceur Init"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [ -f "/lib/systemd/system/$startup.service" ]; then
|
||||||
|
/bin/systemctl "$2" "$startup.service"
|
||||||
|
elif [ -f "/etc/systemd/system/$startup.service" ]; then
|
||||||
|
/bin/systemctl "$2" "$startup.service"
|
||||||
|
elif [ -f "/etc/init.d/$startup" ]; then
|
||||||
|
"/etc/init.d/$startup" "$2"
|
||||||
|
else
|
||||||
|
checklog "ERREUR : Lanceur $startup introuvable"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function testps()
|
function testps()
|
||||||
{
|
{
|
||||||
lanceur=`chercheLanceur "$1"`
|
lanceur=`chercheLanceur "$1" "test"`
|
||||||
if [ ! -e "/etc/init.d/$lanceur" ]; then
|
if [ "$lanceur" != "" ]; then
|
||||||
checklog "ERREUR : /etc/init.d/$lanceur introuvable (testps)"
|
|
||||||
else
|
|
||||||
if [ `ps -edf | grep -v grep | grep "$*" | wc -l` -eq 0 ]; then
|
if [ `ps -edf | grep -v grep | grep "$*" | wc -l` -eq 0 ]; then
|
||||||
checklog "Relance de '$*' par /etc/init.d/$lanceur"
|
checklog "Relance de '$*' par $lanceur"
|
||||||
/etc/init.d/$lanceur stop
|
chercheLanceur $1 stop
|
||||||
/etc/init.d/$lanceur start
|
chercheLanceur $1 start
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -96,14 +117,12 @@ function testps()
|
|||||||
function testpsStrict()
|
function testpsStrict()
|
||||||
{
|
{
|
||||||
# On rend le test plus strict en mettant un slash devant le nom du demon
|
# On rend le test plus strict en mettant un slash devant le nom du demon
|
||||||
lanceur=`chercheLanceur "$1"`
|
lanceur=`chercheLanceur "$1" "test"`
|
||||||
if [ ! -e "/etc/init.d/$lanceur" ]; then
|
if [ "$lanceur" != "" ]; then
|
||||||
checklog "ERREUR : /etc/init.d/$lanceur introuvable (testpsStrict) "
|
|
||||||
else
|
|
||||||
if [ `ps -edf | grep -v grep | grep "/$*" | wc -l` -eq 0 ]; then
|
if [ `ps -edf | grep -v grep | grep "/$*" | wc -l` -eq 0 ]; then
|
||||||
checklog "Relance de '$*' par /etc/init.d/$lanceur"
|
checklog "Relance de '$*' par $lanceur"
|
||||||
/etc/init.d/$lanceur stop
|
chercheLanceur $1 stop
|
||||||
/etc/init.d/$lanceur start
|
chercheLanceur $1 start
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -181,19 +200,18 @@ function testdf()
|
|||||||
function testPort()
|
function testPort()
|
||||||
{
|
{
|
||||||
# Verifie si un port est actif
|
# Verifie si un port est actif
|
||||||
# Attend 3 parametres : l'adresse IP a tester, le port a tester et le
|
# Attend 3 parametres : l'adresse IP a tester, le port a tester et le
|
||||||
# fichier /etc/init.d/XX a relancer
|
# fichier lanceur à utiliser
|
||||||
if [ ! -e "/etc/init.d/$3" ]; then
|
lanceur=`chercheLanceur "$3" "test"`
|
||||||
checklog "ERREUR : /etc/init.d/$3 introuvable (testPort)"
|
if [ "$lanceur" != "" ]; then
|
||||||
else
|
|
||||||
RESULTAT=`echo "QUIT" | nc -w1 $1 $2 2>&1`
|
RESULTAT=`echo "QUIT" | nc -w1 $1 $2 2>&1`
|
||||||
if [ "$?" != "0" ] || [ "$RESULTAT" == "" ]; then
|
if [ "$?" != "0" ] || [ "$RESULTAT" == "" ]; then
|
||||||
checklog "Relance de $3 car injoignable par reseau"
|
checklog "Relance de $3 car injoignable par reseau"
|
||||||
echo "ALERTE : La machine `hostname` ne peut plus se connecter a "
|
echo "ALERTE : La machine `hostname` ne peut plus se connecter a "
|
||||||
echo "$1 port $2 : $RESULTAT"
|
echo "$1 port $2 : $RESULTAT"
|
||||||
echo "Relance de $3"
|
echo "Relance de $3"
|
||||||
/etc/init.d/$3 stop
|
chercheLanceur $3 stop
|
||||||
/etc/init.d/$3 start
|
chercheLanceur $3 start
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -202,19 +220,18 @@ function testPortNoBann()
|
|||||||
{
|
{
|
||||||
# Verifie si un port est actif
|
# Verifie si un port est actif
|
||||||
# Attend 3 parametres : l'adresse IP a tester, le port a tester et le
|
# Attend 3 parametres : l'adresse IP a tester, le port a tester et le
|
||||||
# fichier /etc/init.d/XX a relancer
|
# fichier lanceur à utiliser
|
||||||
# Le port sera actif même si il ne renvoie aucun caractère
|
# Le port sera actif même si il ne renvoie aucun caractère
|
||||||
if [ ! -e "/etc/init.d/$3" ]; then
|
lanceur=`chercheLanceur "$3" "test"`
|
||||||
checklog "ERREUR : /etc/init.d/$3 introuvable (testPort)"
|
if [ "$lanceur" != "" ]; then
|
||||||
else
|
|
||||||
RESULTAT=`echo "QUIT" | nc -w1 $1 $2 2>&1`
|
RESULTAT=`echo "QUIT" | nc -w1 $1 $2 2>&1`
|
||||||
if [ "$?" != "0" ]; then
|
if [ "$?" != "0" ]; then
|
||||||
checklog "Relance de $3 car injoignable par reseau"
|
checklog "Relance de $3 car injoignable par reseau"
|
||||||
echo "ALERTE : La machine `hostname` ne peut plus se connecter a "
|
echo "ALERTE : La machine `hostname` ne peut plus se connecter a "
|
||||||
echo "$1 port $2 : $RESULTAT"
|
echo "$1 port $2 : $RESULTAT"
|
||||||
echo "Relance de $3"
|
echo "Relance de $3"
|
||||||
/etc/init.d/$3 stop
|
chercheLanceur $3 stop
|
||||||
/etc/init.d/$3 start
|
chercheLanceur $3 start
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -225,9 +242,8 @@ function testDDClient()
|
|||||||
# une ligne 'ddclient - sleeping for'. Si ce n'est pas le cas (test en cours)
|
# une ligne 'ddclient - sleeping for'. Si ce n'est pas le cas (test en cours)
|
||||||
# on attend 15 s et on refait le test. Si le test est toujours negatif on
|
# on attend 15 s et on refait le test. Si le test est toujours negatif on
|
||||||
# relance.
|
# relance.
|
||||||
if [ ! -e "/etc/init.d/ddclient" ]; then
|
lanceur=`chercheLanceur "ddclient" "test"`
|
||||||
checklog "ERREUR : /etc/init.d/ddclient introuvable (testDDClient)"
|
if [ "$lanceur" != "" ]; then
|
||||||
else
|
|
||||||
LIGNE1=`ps -edf | grep -v grep | egrep "ddclient "`
|
LIGNE1=`ps -edf | grep -v grep | egrep "ddclient "`
|
||||||
LIGNE2=`echo $LIGNE1 | egrep 'ddclient - sleeping for|ddclient - (connecting to|reading from) checkip.dyndns.com port 80'`
|
LIGNE2=`echo $LIGNE1 | egrep 'ddclient - sleeping for|ddclient - (connecting to|reading from) checkip.dyndns.com port 80'`
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
@@ -235,8 +251,8 @@ function testDDClient()
|
|||||||
ps -edf >> /var/log/check.log
|
ps -edf >> /var/log/check.log
|
||||||
checklog "ddclient non lance ou pas en mode sleep : relance"
|
checklog "ddclient non lance ou pas en mode sleep : relance"
|
||||||
echo "Relance de ddclient"
|
echo "Relance de ddclient"
|
||||||
/etc/init.d/ddclient stop
|
chercheLanceur ddclient stop
|
||||||
/etc/init.d/ddclient start
|
chercheLanceur ddclient start
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -320,12 +336,13 @@ function testFichierPresent
|
|||||||
{
|
{
|
||||||
# Cette fonction teste si le fichier passé en premier argument est disponible
|
# Cette fonction teste si le fichier passé en premier argument est disponible
|
||||||
# Si ce n'est pas le cas, relance le programme passé en deuxième paramètre
|
# Si ce n'est pas le cas, relance le programme passé en deuxième paramètre
|
||||||
if [ ! -e "/etc/init.d/$2" ]; then
|
lanceur=`chercheLanceur "$2" "test"`
|
||||||
checklog "ERREUR : /etc/init.d/$2 introuvable (testFichierPresent)"
|
if [ "$lanceur" != "" ]; then
|
||||||
elif [ ! -e "$1" ]; then
|
if [ ! -e "$1" ]; then
|
||||||
checklog "ERREUR : Fichier $1 absent : relance $2"
|
checklog "ERREUR : Fichier $1 absent : relance $2"
|
||||||
/etc/init.d/$2 stop
|
chercheLanceur $2 stop
|
||||||
/etc/init.d/$2 start
|
chercheLanceur $2 start
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -333,13 +350,12 @@ function testFail2BanActive
|
|||||||
{
|
{
|
||||||
## Cette fonction verifie si des chaines f2b- existent bien dans iptables
|
## Cette fonction verifie si des chaines f2b- existent bien dans iptables
|
||||||
## Si ce n'est pas le cas, essaie de redémarrer fail2ban
|
## Si ce n'est pas le cas, essaie de redémarrer fail2ban
|
||||||
if [ ! -e "/etc/init.d/fail2ban" ]; then
|
lanceur=`chercheLanceur "fail2ban" "test"`
|
||||||
checklog "ERREUR : /etc/init.d/fail2ban introuvable"
|
if [ "$lanceur" != "" ]; then
|
||||||
else
|
|
||||||
/sbin/iptables -L -nv |egrep -q "^Chain f(ail)?2b(an)?-" || (
|
/sbin/iptables -L -nv |egrep -q "^Chain f(ail)?2b(an)?-" || (
|
||||||
checklog "ERREUR : fail2ban absent dans iptables : redémarrage";
|
checklog "ERREUR : fail2ban absent dans iptables : redémarrage";
|
||||||
/etc/init.d/fail2ban stop ;
|
chercheLanceur fail2ban stop ;
|
||||||
/etc/init.d/fail2ban start )
|
chercheLanceur fail2ban start )
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -348,8 +364,8 @@ if [ ! -f "/etc/check.conf" ]; then
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Lanceur est le tableau associatif des lanceurs 'processus'=>'lanceur' dans
|
# Lanceur est le tableau associatif des lanceurs 'processus'=>'lanceur' dans
|
||||||
# /etc/init.d
|
# /etc/init.d ou systemd
|
||||||
# On peut définir des lanceurs dans la fonction chercheLanceur, ou dans le
|
# On peut définir des lanceurs dans la fonction chercheLanceur, ou dans le
|
||||||
# fichier de configuration /etc/check.conf. Si on redéfinit un lanceur dans
|
# fichier de configuration /etc/check.conf. Si on redéfinit un lanceur dans
|
||||||
# /etc/check.conf, c'est lui qui est prioritaire par rapport à ceux codés en dur
|
# /etc/check.conf, c'est lui qui est prioritaire par rapport à ceux codés en dur
|
||||||
|
|||||||
Reference in New Issue
Block a user