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:
2011-08-18 12:40:54 +00:00
commit 5b064fc43a
14 changed files with 408 additions and 0 deletions

251
check Executable file
View 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
View 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
View File

6
debian/changelog vendored Normal file
View 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
View File

@@ -0,0 +1 @@
5

1
debian/conffiles vendored Normal file
View File

@@ -0,0 +1 @@
etc/check.conf

11
debian/control vendored Normal file
View 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
View 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
View File

@@ -0,0 +1 @@
usr/sbin/

0
debian/docs vendored Normal file
View File

2
debian/install vendored Normal file
View File

@@ -0,0 +1,2 @@
check usr/sbin/check
check.conf /etc/check.conf

57
debian/rules vendored Executable file
View 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
View File

@@ -0,0 +1 @@
3.0 (native)

12
debian/watch vendored Normal file
View 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