Script de maj du ftp public. Quelques trucs restent encore faire avant de
le migrer sur Sila. darcs-hash:20060921085756-1dcb7-d6354626e73f7aa68b38e4b42117e0c80bd0e184.gz
This commit is contained in:
parent
714b0037cc
commit
0f1525ca67
1 changed files with 213 additions and 0 deletions
213
intranet/ftp_public/sync-ftp.sh
Executable file
213
intranet/ftp_public/sync-ftp.sh
Executable file
|
@ -0,0 +1,213 @@
|
||||||
|
#! /bin/sh
|
||||||
|
#
|
||||||
|
# Script de mise à jour automatique du FTP public du Cr@ns.
|
||||||
|
#
|
||||||
|
# Copyright (C) Augustin Parret-Fréaud
|
||||||
|
# Licence : GPLv2
|
||||||
|
#
|
||||||
|
|
||||||
|
# TODO : * creer un fichier de logs journalier (modifier la config de rsync
|
||||||
|
# devrait suffire)
|
||||||
|
# * intéger Chronomium, Dynebolic et Kaella (ie. trouver un
|
||||||
|
# serveur rsync qui le fasse ou utiliser autre chose (ftpmirror ?)
|
||||||
|
|
||||||
|
# Chemin du FTP
|
||||||
|
PATHFTP="/pubftp/august/"
|
||||||
|
|
||||||
|
# Distributions à gérer (nb : le nom du répertoire doit être
|
||||||
|
# le même que celui indiqué dans la liste ci-après).
|
||||||
|
DISTRIB="Knoppix"
|
||||||
|
#DISTRIB="Debian Fedora Gentoo Knoppix Ubuntu"
|
||||||
|
|
||||||
|
# Variables diverses
|
||||||
|
LOGFILE="sync-ftp.log"
|
||||||
|
LOGRSYNC="/localhome/parret-freaud/log/rsync"
|
||||||
|
LOGTEMP="/localhome/parret-freaud/log/temp"
|
||||||
|
LOGMAIL="/localhome/parret-freaud/log/mail"
|
||||||
|
RSYNCOPT="--recursive --links --hard-links --times --verbose --delete-after"
|
||||||
|
ENTMAIL1="Liste des fichiers mis à jour sur le ftp public\n\
|
||||||
|
===============================================\n\n"
|
||||||
|
ENTMAIL3="-- \nMessage généré par sync-ftp.sh"
|
||||||
|
|
||||||
|
# Fichiers en écriture pour le groupe (ça ne fonctionne pas, à creuser ...)
|
||||||
|
cd $PATHFTP
|
||||||
|
umask 002
|
||||||
|
|
||||||
|
# Boucle principale
|
||||||
|
echo -e $ENTMAIL1 > $LOGMAIL
|
||||||
|
|
||||||
|
for DIST in $DISTRIB; do
|
||||||
|
|
||||||
|
case $DIST in
|
||||||
|
|
||||||
|
Debian)
|
||||||
|
# Adresse du miroir
|
||||||
|
MIRROR="rsync://ftp.de.debian.org/debian-cd"
|
||||||
|
# Architectures à exclure (à choisir parmi :
|
||||||
|
# alpha arm hppa i386 ia64 m68k mips mipsel powerpc s390)
|
||||||
|
ARCH_EXCLUDE="alpha arm hppa ia64 m68k mips mipsel powerpc s390"
|
||||||
|
# Fichiers/repertoires à exclude pour ces architectures
|
||||||
|
# de la forme "--exclude foo1$ARCH/ --exclude foo2$ARCH/ ... "
|
||||||
|
#ARCH_FR_EXCL="--exclude ${ARCH} "
|
||||||
|
# Exclusions supplémentaires
|
||||||
|
EXCLUDE="--exclude project --exclude bt-cd --exclude jigdo-cd \
|
||||||
|
--exclude jigdo-dvd --exclude bt-dvd --exclude source --exclude sparc \
|
||||||
|
--exclude HEADER.html --exclude trace --exclude mkimage.log "
|
||||||
|
# A virer une fois les tests finis
|
||||||
|
# EXCLUDE=$EXCLUDE"--exclude iso-cd --exclude iso-dvd "
|
||||||
|
EXCLUDE=$EXCLUDE"--exclude debian-* "
|
||||||
|
for ARCH in $ARCH_EXCLUDE; do
|
||||||
|
EXCLUDE=$EXCLUDE"--exclude $ARCH "
|
||||||
|
done
|
||||||
|
PATHLOCAL=$PATHFTP"$DIST/"
|
||||||
|
ENTMAIL2="$DIST ($PATHLOCAL)\n======\n"
|
||||||
|
TAIL=15
|
||||||
|
;;
|
||||||
|
|
||||||
|
Fedora)
|
||||||
|
# Adresse du miroir
|
||||||
|
MIRROR="rsync://ftp.uvsq.fr/fedora/"
|
||||||
|
# Architectures à exclure (à choisir parmi :
|
||||||
|
# i386, x86-64)
|
||||||
|
ARCH_EXCLUDE="x86_64"
|
||||||
|
# Exclusions supplémentaires
|
||||||
|
EXCLUDE="--exclude development --exclude test --exclude updates \
|
||||||
|
--exclude source --exclude debug --exclude os --exclude SRPMS "
|
||||||
|
# A virer une fois les tests finis
|
||||||
|
EXCLUDE=$EXCLUDE"--exclude iso "
|
||||||
|
for ARCH in $ARCH_EXCLUDE; do
|
||||||
|
EXCLUDE=$EXCLUDE"--exclude $ARCH "
|
||||||
|
done
|
||||||
|
PATHLOCAL=$PATHFTP"$DIST/"
|
||||||
|
ENTMAIL2="$DIST ($PATHLOCAL)\n======\n"
|
||||||
|
TAIL=3
|
||||||
|
;;
|
||||||
|
|
||||||
|
Gentoo)
|
||||||
|
# Adresse du miroir
|
||||||
|
MIRROR="rsync://ftp.belnet.be/gentoo/releases/"
|
||||||
|
# Architectures à exclure (à choisir parmi :
|
||||||
|
# alpha, amd64, hppa, ia64, ppc, ppc64, sparc, x86)
|
||||||
|
ARCH_EXCLUDE="alpha amd64 hppa ia64 ppc ppc64 sparc"
|
||||||
|
# Exclusions supplémentaires
|
||||||
|
EXCLUDE="--exclude historical --exclude mips --exclude stages \
|
||||||
|
--exclude packagecd --exclude snapshots --exclude livecd "
|
||||||
|
# A virer une fois les tests finis
|
||||||
|
EXCLUDE=$EXCLUDE"--exclude 2005.1 --exclude 2005.1-r1 "
|
||||||
|
for ARCH in $ARCH_EXCLUDE; do
|
||||||
|
EXCLUDE=$EXCLUDE"--exclude $ARCH "
|
||||||
|
done
|
||||||
|
PATHLOCAL=$PATHFTP"$DIST/"
|
||||||
|
ENTMAIL2="$DIST ($PATHLOCAL)\n======\n"
|
||||||
|
TAIL=21
|
||||||
|
;;
|
||||||
|
|
||||||
|
Knoppix)
|
||||||
|
# Adresse du miroir
|
||||||
|
MIRROR="rsync://ftp.belnet.be/packages/knoppix/"
|
||||||
|
# Architectures à exclure (à choisir parmi :
|
||||||
|
# alpha, amd64, hppa, ia64, ppc, ppc64, sparc, x86)
|
||||||
|
ARCH_EXCLUDE=""
|
||||||
|
# Exclusions supplémentaires
|
||||||
|
EXCLUDE="--exclude contrib --exclude docs \
|
||||||
|
--exclude knoppix-cover --exclude knoppix-customize \
|
||||||
|
--exclude knoppix-vortrag-als2000 --exclude md5-old --exclude qemu-0.8.1 \
|
||||||
|
--exclude qemu-0.8.1-windows-README.txt --exclude *DE.iso* "
|
||||||
|
# A virer une fois les tests finis
|
||||||
|
EXCLUDE=$EXCLUDE"--exclude knoppix-dvd --exclude KNOPPIX* "
|
||||||
|
for ARCH in $ARCH_EXCLUDE; do
|
||||||
|
EXCLUDE=$EXCLUDE"--exclude $ARCH "
|
||||||
|
done
|
||||||
|
PATHLOCAL=$PATHFTP"$DIST/"
|
||||||
|
ENTMAIL2="$DIST ($PATHLOCAL)\n=======\n"
|
||||||
|
TAIL=21
|
||||||
|
;;
|
||||||
|
|
||||||
|
Ubuntu)
|
||||||
|
# Adresse du miroir
|
||||||
|
MIRROR="rsync://ftp.oleane.net/ubuntu-cd/"
|
||||||
|
# Architectures à exclure (à choisir parmi :
|
||||||
|
# amd64 i386 powerpc sparc)
|
||||||
|
ARCH_EXCLUDE="amd64 powerpc sparc"
|
||||||
|
# Fichiers/repertoires à exclude pour ces architectures
|
||||||
|
# de la forme "--exclude foo1$ARCH/ --exclude foo2$ARCH/ ... "
|
||||||
|
#ARCH_FR_EXCL="--exclude ${ARCH} "
|
||||||
|
# Exclusions supplémentaires
|
||||||
|
EXCLUDE="--exclude cdicons --exclude edubuntu --exclude favicon.ico \
|
||||||
|
--exclude FOOTER.html --exclude HEADER.html --exclude jigit \
|
||||||
|
--exclude releases --exclude ubuntu-server --exclude .trace \
|
||||||
|
--exclude .htaccess --exclude .manifest "
|
||||||
|
# A virer une fois les tests finis
|
||||||
|
EXCLUDE=$EXCLUDE"--exclude kubuntu* --exclude xubuntu* --exclude ubuntu* "
|
||||||
|
for ARCH in $ARCH_EXCLUDE; do
|
||||||
|
EXCLUDE=$EXCLUDE"--exclude *-$ARCH.* "
|
||||||
|
done
|
||||||
|
PATHLOCAL=$PATHFTP"$DIST/"
|
||||||
|
ENTMAIL2="$DIST ($PATHLOCAL)\n======\n"
|
||||||
|
TAIL=8
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Sorties de test, à virer dans la version finale
|
||||||
|
echo $MIRROR
|
||||||
|
echo $ARCH_EXCLUDE
|
||||||
|
echo $EXCLUDE
|
||||||
|
echo $PATHLOCAL
|
||||||
|
|
||||||
|
umask 002
|
||||||
|
rsync $RSYNCOPT $EXCLUDE $MIRROR $PATHLOCAL > $LOGRSYNC
|
||||||
|
# rsync $RSYNCOPT $EXCLUDE $MIRROR > $LOGRSYNC
|
||||||
|
ERRC=$?
|
||||||
|
cat $LOGRSYNC
|
||||||
|
# En cas d'erreur, on notifie avec le code de sortie.
|
||||||
|
if [ $ERRC != 0 ]; then
|
||||||
|
echo "Erreur $ERRC"
|
||||||
|
echo -e $ENTMAIL2 >> $LOGMAIL
|
||||||
|
echo -e "Erreur, le processus rsync a retourné le code $ERRC.\n\n" >> $LOGMAIL
|
||||||
|
else
|
||||||
|
# Si une mise à jour a été effectuée, on notifie.
|
||||||
|
tail -n +$TAIL $LOGRSYNC > $LOGTEMP
|
||||||
|
# Sortie de test
|
||||||
|
cat $LOGTEMP
|
||||||
|
STATUS=$(cat $LOGTEMP | wc -l)
|
||||||
|
if (($STATUS > 2)); then
|
||||||
|
echo "Une mise à jour à été effectuée"
|
||||||
|
echo -e $ENTMAIL2 >> $LOGMAIL
|
||||||
|
cat $LOGTEMP >> $LOGMAIL
|
||||||
|
echo -e "\n" >> $LOGMAIL
|
||||||
|
else echo "Pas de mise à jour effectuée"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
#echo $STATUS
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
# Fonction d'envoi du mail de notification
|
||||||
|
mail_ftp() {
|
||||||
|
local FROM="From:FTP Public (Sila)<august@crans.org>"
|
||||||
|
local SUBJECT="Notification de synchronisation du FTP (test)"
|
||||||
|
local RECIPIENT="<augustin@crans.org>"
|
||||||
|
local XMAILER="X-Mailer:Bash sync-ftp (by August')"
|
||||||
|
echo $1 | mail -a "$FROM" -a "$XMAILER" -s "$SUBJECT" $RECIPIENT < $1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Envoi du mail de notification
|
||||||
|
LENGTH_MAIL=$(cat $LOGMAIL | wc -l)
|
||||||
|
if (($LENGTH_MAIL > 4)); then
|
||||||
|
echo -e $ENTMAIL3 >> $LOGMAIL
|
||||||
|
mail_ftp $LOGMAIL
|
||||||
|
# Infos à virer par la suite
|
||||||
|
echo "Envoi du mail"
|
||||||
|
else echo "Pas d'envoi de mail"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $LENGTH_MAIL
|
||||||
|
|
||||||
|
# Nettoyage des fichiers temporaires
|
||||||
|
rm -f $LOGRSYNC
|
||||||
|
rm -f $LOGTEMP
|
||||||
|
rm -f $LOGMAIL
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Add table
Add a link
Reference in a new issue