Suppression de la majuscule dans le nom du paquet domcheck (Paquets Debian en minuscule)
git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@410 bf3deb0d-5f1a-0410-827f-c0cc1f45334c
This commit is contained in:
251
check
Executable file
251
check
Executable file
@@ -0,0 +1,251 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
## CHECK
|
||||||
|
|
||||||
|
## Verifie que les programmes fonctionnent et les relance si ils sont en panne
|
||||||
|
## Doit etre lance par cron. On peut par exemple mettre un /etc/cron.d/check
|
||||||
|
## qui contient :
|
||||||
|
## * * * * * root /usr/sbin/check
|
||||||
|
|
||||||
|
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
|
||||||
|
|
||||||
|
## Configuration dans un fichier exterieur : /etc/check.conf
|
||||||
|
|
||||||
|
if [ "`whoami`" != "root" ]; then
|
||||||
|
echo "Check lance par un autre utilisateur que root : EXIT"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
RUNLEVEL=`runlevel | cut -f 2 -d ' '`
|
||||||
|
if [ $RUNLEVEL -eq 0 ] || [ $RUNLEVEL -eq 6 ]; then
|
||||||
|
echo "Arret ou reboot en cours : on sort"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "/tmp/check-bloque" ]; then
|
||||||
|
# Check est bloque par un programme externe : on sort
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
function checklog()
|
||||||
|
{
|
||||||
|
# Loggue dans /var/log/check.log tous les arguments passes a la fonction
|
||||||
|
# Ne doit pas se retrouver dans le fichier de configuration (sauf pour test
|
||||||
|
# de demarrage de l'application check)
|
||||||
|
echo "`date +"%b %d %T"` `hostname` check - $@" >> /var/log/check.log
|
||||||
|
if [ "$alerteAudio" == "TRUE" ]; then
|
||||||
|
rc=`/usr/bin/alerte.php "$@"`
|
||||||
|
if [ "$rc" != "OK" ]; then
|
||||||
|
echo $rc
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ "$alerteNotify" == "TRUE" ]; then
|
||||||
|
rc=`/usr/bin/notify-send -u critical -t 2000 "$@"`
|
||||||
|
if [ "$rc" != "OK" ]; then
|
||||||
|
echo $rc
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function testps()
|
||||||
|
{
|
||||||
|
if [ ! -e "/etc/init.d/$1" ]; then
|
||||||
|
echo "ERREUR : /etc/init.d/$1 introuvable (testps)"
|
||||||
|
else
|
||||||
|
if [ `ps -edf | grep -v grep | grep "$*" | wc -l` -eq 0 ]; then
|
||||||
|
checklog "Relance de '$*'"
|
||||||
|
/etc/init.d/$1 stop
|
||||||
|
/etc/init.d/$1 start
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function testpsStrict()
|
||||||
|
{
|
||||||
|
# On rend le test plus strict en mettant un slash devant le nom du demon
|
||||||
|
if [ ! -e "/etc/init.d/$1" ]; then
|
||||||
|
echo "ERREUR : /etc/init.d/$1 introuvable (testpsStrict) "
|
||||||
|
else
|
||||||
|
if [ `ps -edf | grep -v grep | grep "/$*" | wc -l` -eq 0 ]; then
|
||||||
|
checklog "Relance de '$*'"
|
||||||
|
/etc/init.d/$1 stop
|
||||||
|
/etc/init.d/$1 start
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function testiptables()
|
||||||
|
{
|
||||||
|
# Verifie que iptables est bien ferme
|
||||||
|
if [ ! -e "/etc/init.d/ipt4" ] && [ ! -e "/etc/init.d/ipt" ]; then
|
||||||
|
echo "ERREUR : /etc/init.d/ipt4 ou /etc/init.d/ipt introuvable (testiptables) "
|
||||||
|
else
|
||||||
|
if [ `/sbin/iptables -L -n | wc -l` -lt 10 ]; then
|
||||||
|
checklog "Relance de IPTables IPv4"
|
||||||
|
if [ -e "/etc/init.d/ipt4" ]; then
|
||||||
|
/etc/init.d/ipt4 start
|
||||||
|
else
|
||||||
|
/etc/init.d/ipt start
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function testip6tables()
|
||||||
|
{
|
||||||
|
# Verifie que ip6tables est bien ferme
|
||||||
|
if [ ! -e "/etc/init.d/ipt6" ]; then
|
||||||
|
echo "ERREUR : /etc/init.d/ipt6 introuvable (testip6tables) "
|
||||||
|
else
|
||||||
|
if [ `/sbin/ip6tables -L -n | wc -l` -lt 10 ]; then
|
||||||
|
checklog "Relance de IPTables IPv6"
|
||||||
|
/etc/init.d/ipt6 start
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function testDNS()
|
||||||
|
{
|
||||||
|
# Verifie si le DNS a change pour l'adresse passe en argument
|
||||||
|
NEW="`host -t A $1 2>/dev/null`"
|
||||||
|
if [ "$?" != "0" ]; then return; fi
|
||||||
|
if [ "$NEW" != "`cat /var/lib/check 2>&1 /dev/null`" ]; then
|
||||||
|
checklog "Changement d'adresse pour $1 : `host -t A $1`"
|
||||||
|
echo "ALERTE : Nouvelle adresse DNS pour $1 :"
|
||||||
|
echo " Ancienne : `cat /var/lib/check 2>&1 /dev/null`"
|
||||||
|
echo " Nouvelle : $NEW"
|
||||||
|
host -t A $1 > /var/lib/check
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function testdf()
|
||||||
|
{
|
||||||
|
# Teste tous les disques et renvoie si le disque est plein a plus de 84%
|
||||||
|
# On peut aussi tester les disques unitairement :
|
||||||
|
# testdf /mnt
|
||||||
|
# On peut aussi tester unitairement avec une limite differente de 84%
|
||||||
|
# testdf /mnt 90
|
||||||
|
if [ -z "$2" ]; then
|
||||||
|
limite=84
|
||||||
|
else
|
||||||
|
limite=$2
|
||||||
|
fi
|
||||||
|
if [ ! -z "$1" ]; then
|
||||||
|
fs="$1"
|
||||||
|
fi
|
||||||
|
IFS="
|
||||||
|
"
|
||||||
|
for ligne in `df -P -l -x tmpfs -x devtmpfs $fs | sed '/Used Available/d'`; do
|
||||||
|
fs_space=`echo $ligne | awk '{print $5}'| sed 's/\%//'`
|
||||||
|
filesys=`echo $ligne | awk '{print $6}'`
|
||||||
|
if [ $fs_space -gt $limite ]; then
|
||||||
|
checklog "Systeme de fichier $filesys plein a $fs_space %"
|
||||||
|
echo "Systeme de fichier $filesys plein a $fs_space %"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function testPort()
|
||||||
|
{
|
||||||
|
# Verifie si un port est actif
|
||||||
|
# Attend 3 parametres : l'adresse IP a tester, le port a tester et le
|
||||||
|
# fichier /etc/init.d/XX a relancer
|
||||||
|
if [ ! -e "/etc/init.d/$3" ]; then
|
||||||
|
echo "ERREUR : /etc/init.d/$3 introuvable (testPort)"
|
||||||
|
else
|
||||||
|
RESULTAT=`echo "QUIT" | nc -w1 $1 $2 2>&1`
|
||||||
|
if [ "$?" != "0" ]; then
|
||||||
|
checklog "Relance de $3 car injoignable par reseau"
|
||||||
|
echo "ALERTE : La machine `hostname` ne peut plus se connecter a "
|
||||||
|
echo "$1 port $2 : $RESULTAT"
|
||||||
|
echo "Relance de $3"
|
||||||
|
/etc/init.d/$3 stop
|
||||||
|
/etc/init.d/$3 start
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function testDDClient()
|
||||||
|
{
|
||||||
|
# Verifie si ddclient est toujours actif. Pour cela, le processus doit avoir
|
||||||
|
# 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
|
||||||
|
# relance.
|
||||||
|
if [ ! -e "/etc/init.d/$3" ]; then
|
||||||
|
echo "ERREUR : /etc/init.d/$3 introuvable (testDDClient)"
|
||||||
|
else
|
||||||
|
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'`
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
checklog " DDCLIENT ERREUR 1 (LIGNE1=$LIGNE1///LIGNE2=$LIGNE2)"
|
||||||
|
ps -edf >> /var/log/check.log
|
||||||
|
checklog "ddclient non lance ou pas en mode sleep : relance"
|
||||||
|
echo "Relance de ddclient"
|
||||||
|
/etc/init.d/ddclient stop
|
||||||
|
/etc/init.d/ddclient start
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function testMount()
|
||||||
|
{
|
||||||
|
# Verifie si le point de montage passe en argument est bien monte et en RW
|
||||||
|
# Si pas monte, on le monte. Si en RO, on le passe en RW
|
||||||
|
PNT=$1
|
||||||
|
MNT=`egrep -v "^{none|rootfs|binfmt_misc|gvfs-fuse-daemon} " /proc/mounts | cut -d " " -f 2 | egrep "^$PNT$"`
|
||||||
|
if [ "$MNT" == "" ]; then
|
||||||
|
checklog "Disque $PNT non monte : remonte"
|
||||||
|
echo "Disque $PNT non monte : remonte"
|
||||||
|
mount $PNT
|
||||||
|
fi
|
||||||
|
ST=`egrep -v "^{none|rootfs|binfmt_misc|gvfs-fuse-daemon} " /proc/mounts | cut -d " " -f 2,4| egrep "^$PNT " | cut -d " " -f 2 | cut -d "," -f 1`
|
||||||
|
|
||||||
|
if [ "$ST" == "ro" ]; then
|
||||||
|
checklog "Disque $PNT en RO : Passage en RW"
|
||||||
|
echo "Disque $PNT en RO : Passage en RW"
|
||||||
|
mount -o remount,rw $PNT
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function testRepertoireVide()
|
||||||
|
{
|
||||||
|
# Verifie que le repertoire passe en argument est bien vide
|
||||||
|
REP=$1
|
||||||
|
if [ "`ls -1 $REP`" != "" ]; then
|
||||||
|
checklog "Repertoire $1 non vide"
|
||||||
|
echo "Repertoire $1 non vide :"
|
||||||
|
ls -1 $REP
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function testBatterie()
|
||||||
|
{
|
||||||
|
# Cette fonction teste la batterie de l'ordinateur si elle est dispo et envoie
|
||||||
|
# une erreur si le niveau tombe sous le seuil defini pour la batterie
|
||||||
|
# Recherche du seuil :
|
||||||
|
SEUIL=`grep "design capacity warning:" /proc/acpi/battery/BAT1/info 2>/dev/null | cut -d " " -f 4`
|
||||||
|
# Recherche de la capacite restante :
|
||||||
|
CAPA=`grep "remaining capacity:" /proc/acpi/battery/BAT1/state 2>/dev/null | cut -d " " -f 8`
|
||||||
|
if [ -n $SEUIL ] && [ -n $CAPA ] && [ $CAPA -lt $SEUIL ]; then
|
||||||
|
checklog "Batterie faible ($CAPA/$SEUIL)"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ ! -f "/etc/check.conf" ]; then
|
||||||
|
echo "Le fichier /etc/check.conf n'existe pas : EXIT"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
. /etc/check.conf
|
||||||
|
|
||||||
|
if [ "$alerteNotify" == "TRUE" ] && [ ! -f "/usr/bin/notify-send" ]; then
|
||||||
|
echo "Check : alerteNotify demande mais /usr/bin/notify-send non disponible"
|
||||||
|
echo " apt-get install libnotify-bin"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$alerteAudio" == "TRUE" ] && [ ! -f "/usr/bin/alerte.php" ]; then
|
||||||
|
echo "Check : alerte audio demandée mais /usr/bin/alerte.php non disponible"
|
||||||
|
echo " apt-get install cric-alerte"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
55
check.conf
Normal file
55
check.conf
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
## Le support de alerteAudio necessite l'installation du paquet cric-alerte
|
||||||
|
alerteAudio=TRUE
|
||||||
|
## Le support de notify necessite l'installation du paquet libnotify-bin
|
||||||
|
alerteNotify=FALSE
|
||||||
|
|
||||||
|
## Liste des processus qui doivent etre actifs.
|
||||||
|
## Le lanceur doit porter le meme nom que le processus
|
||||||
|
#for process in {"apache2","sshd","postfix","ntpd","dovecot","spamd","mysql","qpsmtpd"}; do
|
||||||
|
# testps $process;
|
||||||
|
#done
|
||||||
|
|
||||||
|
## On rend le test plus strict en mettant un slash devant le nom du demon
|
||||||
|
## Le lanceur doit porter le meme nom que le processus
|
||||||
|
#for process in {"postfix","ntpd","dovecot"}; do
|
||||||
|
# testpsStrict $process;
|
||||||
|
#done
|
||||||
|
|
||||||
|
## Verifie que le pare-feu IPv4 est actif. Lanceur /etc/init.d/ipt4
|
||||||
|
#testiptables
|
||||||
|
|
||||||
|
## Verifie que le pare-feu IPv6 est actif. Lanceur /etc/init.d/ipt6
|
||||||
|
#testip6tables
|
||||||
|
|
||||||
|
## Penser que le point de montage DOIT etre dans /etc/fstab
|
||||||
|
## Ne mettre QUE le point de montage, pas le disque
|
||||||
|
## Cette fonction remonte le montage ou le repasse en RW si il passe RO
|
||||||
|
## Ne fonctionne pas sur les filesystems suivants :
|
||||||
|
## none,rootfs,binfmt_misc,gvfs-fuse-daemon
|
||||||
|
## voir dans /proc/mounts
|
||||||
|
#testMount /home
|
||||||
|
|
||||||
|
## Verifie si le DNS change pour le nom passe en parametre
|
||||||
|
#testDNS fournier.homedns.org
|
||||||
|
|
||||||
|
## Verifie la place occupee sur les partitions
|
||||||
|
## Par defaut, reagit si l'occupation depasse 84% pour tous les disques
|
||||||
|
#testdf
|
||||||
|
## Verifie seulement la partition passee en parametre
|
||||||
|
#testdf /mnt
|
||||||
|
## Verifie seulement la partition passee en parametre et avec l'occupation max
|
||||||
|
#testdf /mnt 90
|
||||||
|
|
||||||
|
## Verifie que le service est actif sur la machine et le port passé en argument
|
||||||
|
## Si le port ne fonctionne pas, utilise le lanceur passe en 3e argument
|
||||||
|
#testPort localhost 25 postfix
|
||||||
|
#testPort fournier.homedns.org 25 qpsmtpd
|
||||||
|
|
||||||
|
## Verifie si le processus DDClient est bien present et pas bloque
|
||||||
|
#testDDClient
|
||||||
|
|
||||||
|
## Verifie si le repertoire passe en argument est bien vide
|
||||||
|
#testRepertoireVide /var/spool/postfix/corrupt
|
||||||
|
|
||||||
|
## Verifie si le seuil de la batterie est depasse et donc qu'il faut recharger
|
||||||
|
#testBatterie
|
||||||
0
debian/README.Debian
vendored
Normal file
0
debian/README.Debian
vendored
Normal file
6
debian/changelog
vendored
Normal file
6
debian/changelog
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
domcheck (0.3-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* Initial release
|
||||||
|
|
||||||
|
-- Dominique Fournier <dominique@fournier.homedns.org> Thu, 2 Jun 2011 23:07:16 +0100
|
||||||
|
|
||||||
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
5
|
||||||
1
debian/conffiles
vendored
Normal file
1
debian/conffiles
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
etc/check.conf
|
||||||
11
debian/control
vendored
Normal file
11
debian/control
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Source: domcheck
|
||||||
|
Section: admin
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Dominique Fournier <dominique@fournier.homedns.org>
|
||||||
|
Build-Depends: debhelper (>= 4.0.0)
|
||||||
|
Standards-Version: 3.6.2
|
||||||
|
|
||||||
|
Package: domcheck
|
||||||
|
Architecture: all
|
||||||
|
Depends: bash
|
||||||
|
Description: This software check if the system is correct : all the checked daemons are actives, the filesystem is not full, some special directories are empty...
|
||||||
10
debian/copyright
vendored
Normal file
10
debian/copyright
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
This package was debianized by Dominique Fournier <dominique@fournier38.fr> on
|
||||||
|
Thu, 2 Jun 2011 23:12:16 +0100 for the first time.
|
||||||
|
|
||||||
|
Copyright Holder: Dominique Fournier <dominique@fournier38.fr>
|
||||||
|
|
||||||
|
License: GPL v3
|
||||||
|
|
||||||
|
On Debian GNU/Linux systems, the complete text of the GNU General
|
||||||
|
Public License can be found in `/usr/share/common-licenses/GPL-3'.
|
||||||
|
|
||||||
1
debian/dirs
vendored
Normal file
1
debian/dirs
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
usr/sbin/
|
||||||
0
debian/docs
vendored
Normal file
0
debian/docs
vendored
Normal file
2
debian/install
vendored
Normal file
2
debian/install
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
check usr/sbin/check
|
||||||
|
check.conf /etc/check.conf
|
||||||
57
debian/rules
vendored
Executable file
57
debian/rules
vendored
Executable file
@@ -0,0 +1,57 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
# -*- makefile -*-
|
||||||
|
# Sample debian/rules that uses debhelper.
|
||||||
|
# This file was originally written by Joey Hess and Craig Small.
|
||||||
|
# As a special exception, when this file is copied by dh-make into a
|
||||||
|
# dh-make output file, you may use that output file without restriction.
|
||||||
|
# This special exception was added by Craig Small in version 0.37 of dh-make.
|
||||||
|
|
||||||
|
# Uncomment this to turn on verbose mode.
|
||||||
|
#export DH_VERBOSE=1
|
||||||
|
|
||||||
|
clean:
|
||||||
|
dh_testdir
|
||||||
|
dh_testroot
|
||||||
|
dh_clean
|
||||||
|
|
||||||
|
install: build
|
||||||
|
dh_testdir
|
||||||
|
dh_testroot
|
||||||
|
dh_prep
|
||||||
|
dh_installdirs
|
||||||
|
dh_installdocs
|
||||||
|
dh_install
|
||||||
|
|
||||||
|
# Build architecture-dependent files here.
|
||||||
|
binary-arch: build install
|
||||||
|
dh_testdir
|
||||||
|
dh_testroot
|
||||||
|
dh_installchangelogs
|
||||||
|
# dh_installdocs
|
||||||
|
# dh_installexamples
|
||||||
|
# dh_install
|
||||||
|
# dh_installmenu
|
||||||
|
# dh_installdebconf
|
||||||
|
# dh_installlogrotate
|
||||||
|
# dh_installemacsen
|
||||||
|
# dh_installpam
|
||||||
|
# dh_installmime
|
||||||
|
# dh_installinit
|
||||||
|
# dh_installcron
|
||||||
|
# dh_installinfo
|
||||||
|
# dh_installman
|
||||||
|
dh_link
|
||||||
|
# dh_strip
|
||||||
|
dh_compress
|
||||||
|
dh_fixperms
|
||||||
|
# dh_perl
|
||||||
|
# dh_python
|
||||||
|
# dh_makeshlibs
|
||||||
|
dh_installdeb
|
||||||
|
# dh_shlibdeps
|
||||||
|
dh_gencontrol
|
||||||
|
dh_md5sums
|
||||||
|
dh_builddeb
|
||||||
|
|
||||||
|
binary: binary-indep binary-arch
|
||||||
|
.PHONY: build clean binary-indep binary-arch binary install configure
|
||||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.0 (native)
|
||||||
12
debian/watch
vendored
Normal file
12
debian/watch
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Example watch control file for uscan
|
||||||
|
# Rename this file to "watch" and then you can run the "uscan" command
|
||||||
|
# to check for upstream updates and more.
|
||||||
|
# See uscan(1) for format
|
||||||
|
|
||||||
|
# Compulsory line, this is a version 3 file
|
||||||
|
version=3
|
||||||
|
|
||||||
|
# Uncomment to examine a Webpage
|
||||||
|
# <Webpage URL> <string match>
|
||||||
|
# Uncomment to examine a Webserver directory
|
||||||
|
http://svn.fournier38.fr/ProgSVN/release/domcheck/domcheck-(.*)\.tgz
|
||||||
Reference in New Issue
Block a user