c'est fonctionnel maintenant je pense.
(stransky) darcs-hash:20021123181849-a279a-a3450b7f20ba3054b472510b2b4e833b2e8726da.gz
This commit is contained in:
parent
99ac0511fe
commit
e710cb231e
1 changed files with 61 additions and 80 deletions
141
fix-active
141
fix-active
|
@ -6,7 +6,7 @@
|
||||||
## Login stransky <stransky@crans.org>
|
## Login stransky <stransky@crans.org>
|
||||||
##
|
##
|
||||||
## Started on Mon 01 nov 2001 02:40:25 CET stransky
|
## Started on Mon 01 nov 2001 02:40:25 CET stransky
|
||||||
## Last update sam 05 jan 2002 14:20:25 CET stransky
|
## Last update sam 23 nov 2002 19:15:14 CET stransky
|
||||||
##
|
##
|
||||||
#
|
#
|
||||||
# à utiliser en cas de plantage et de non synchro de /var/lib/news/active.
|
# à utiliser en cas de plantage et de non synchro de /var/lib/news/active.
|
||||||
|
@ -29,35 +29,20 @@
|
||||||
|
|
||||||
#exit 0
|
#exit 0
|
||||||
|
|
||||||
if [ 1 -le "$#" ] ; then
|
if [ `id -u` -ne 0 ] ; then
|
||||||
|
echo "Be root or die ! (Need to act as news user)"
|
||||||
|
exit 1
|
||||||
|
elif [ 1 -le "$#" ] ; then
|
||||||
echo "erreur : il ne faut pas mettre d'argument"
|
echo "erreur : il ne faut pas mettre d'argument"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
elif [ "`cat /usr/scripts/active.template | wc -l`" -ne "`cat /var/lib/news/active | wc -l`" ] ; then
|
||||||
|
echo "Attention, soit le template est obsolète (nouveaux newsgroups ajoutés), soit /var/lib/news/active est corrompu (nb de ligne diffère)."
|
||||||
if [ -f /tmp/active.new ] ; then
|
echo "mettre à jour active.template ? (n pour abondonner) y/n"
|
||||||
echo "/tmp/active.new: le fichier existe déjà ! Effacer ? y/n"
|
|
||||||
read reply1;
|
|
||||||
case $reply1 in
|
|
||||||
y* | Y* | o* | O*)
|
|
||||||
echo "OK, on le remplace avec une version toute neuve"
|
|
||||||
rm -f /tmp/active.new
|
|
||||||
;;
|
|
||||||
n* | N*)
|
|
||||||
echo "OK, on le laisse"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "`cat /usr/scripts/active.template | wc -l`" -ne "`cat /var/lib/news/active | wc -l`" ] ; then
|
|
||||||
echo "Attention, soit le template est obsolète, soit /var/lib/news/active est corrompu (nb de ligne diffère)"
|
|
||||||
echo "continuer ? y/n"
|
|
||||||
read reply2;
|
read reply2;
|
||||||
case $reply2 in
|
case $reply2 in
|
||||||
y* | Y* | o* | O*)
|
y* | Y* | o* | O*)
|
||||||
echo "OK, on écrase le active corrompu"
|
cp /var/lib/news/active /usr/scripts/active.template
|
||||||
mv /var/lib/news/active /var/lib/news/active.bak
|
echo active.template mis à jour.
|
||||||
echo active sauvé en /var/lib/news/active.bak
|
|
||||||
;;
|
;;
|
||||||
n* | N*)
|
n* | N*)
|
||||||
echo "OK, on laisse active en place ; corriger active.template"
|
echo "OK, on laisse active en place ; corriger active.template"
|
||||||
|
@ -68,14 +53,45 @@ fi
|
||||||
|
|
||||||
|
|
||||||
echo "arrêt d'innd..."
|
echo "arrêt d'innd..."
|
||||||
#ctlinnd throttle 'COUPURE TEMPORAIRE - fix-active'
|
INNSTOP
|
||||||
#ctlinnd shutdown 'fix-active'
|
|
||||||
|
MAKENEWACTIVE
|
||||||
|
|
||||||
|
echo "affichage du diff"
|
||||||
|
echo " "
|
||||||
|
diff /tmp/active.new /var/lib/news/active
|
||||||
|
echo " "
|
||||||
|
|
||||||
|
if ! ( diff -q /tmp/active.new /var/lib/news/active > /dev/null ) ; then
|
||||||
|
echo "la version générée et la version en place diffèrent : il faut la remplacer" ;
|
||||||
|
echo "souhaitez-vous remplacer le fichier actuellement en place ? y/n" ;
|
||||||
|
read reply3;
|
||||||
|
case $reply3 in
|
||||||
|
y* | Y* | o* | O*)
|
||||||
|
echo "OK, on le remplace"
|
||||||
|
cp /tmp/active.new /var/lib/news/active
|
||||||
|
chown news.news /var/lib/news/active
|
||||||
|
chmod 664 /var/lib/news/active
|
||||||
|
;;
|
||||||
|
n* | N*)
|
||||||
|
echo "OK, on le laisse, mais il faut corriger cela !"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo "la version générée et la version en place sont identiques : on ne fait rien." ;
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "redémarrage d'innd..."
|
||||||
|
/id/inn2 start
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
#
|
INNSTOP () {
|
||||||
|
|
||||||
#/id/inn2 stop
|
#/id/inn2 stop
|
||||||
#### Pour avoir des logs plus clairs, on remplace stop par un message personnalisé.
|
#### Pour avoir des logs plus clairs, on remplace stop par un message personnalisé.
|
||||||
#
|
|
||||||
su news -c '/usr/lib/news/bin/ctlinnd shutdown 'réparation active''
|
su news -c '/usr/lib/news/bin/ctlinnd shutdown 'réparation active''
|
||||||
|
|
||||||
# Stop innwatch (if running)
|
# Stop innwatch (if running)
|
||||||
|
@ -98,13 +114,13 @@ su news -c '/usr/lib/news/bin/ctlinnd shutdown 'r
|
||||||
done'
|
done'
|
||||||
printf "\n"
|
printf "\n"
|
||||||
|
|
||||||
#### fin du stop personnalisé.
|
|
||||||
|
|
||||||
|
|
||||||
sleep 2
|
sleep 2
|
||||||
sync
|
sync
|
||||||
|
#### fin du stop personnalisé.
|
||||||
|
}
|
||||||
|
|
||||||
touch /tmp/active.new
|
MAKENEWACTIVE () {
|
||||||
|
rm -f /tmp/active.new
|
||||||
cd /var/spool/news/articles
|
cd /var/spool/news/articles
|
||||||
while read gr hi lo md
|
while read gr hi lo md
|
||||||
do
|
do
|
||||||
|
@ -114,59 +130,24 @@ do
|
||||||
if [ "$hi" = '' ] ; then
|
if [ "$hi" = '' ] ; then
|
||||||
hi=0
|
hi=0
|
||||||
fi
|
fi
|
||||||
if [ $hi -eq 0 -a $lo -eq 1 ] ; then
|
if [ "$hi" = 0 -a "$lo" = 1 ] ; then
|
||||||
last=0
|
last=0
|
||||||
|
lo=0
|
||||||
else
|
else
|
||||||
last="`ls -1 $d 2>/dev/null | sort -n | tail | grep '^[1-9][0-9]*$' | tail -1`"
|
last="`ls -1 $d 2>/dev/null | sort -n | tail | grep '^[1-9][0-9]*$' | tail -1`" 2> /dev/null
|
||||||
if [ "$last" = '' ] ; then
|
if [ "$last" = '' ] ; then
|
||||||
last=$hi
|
last=$hi
|
||||||
fi
|
fi
|
||||||
lo="`ls -1 $d 2>/dev/null | sort -n | head | grep '^[1-9][0-9]*$' | head -1`"
|
if [ "$lo" = '' -o "$lo" = 0 ] ; then
|
||||||
md='y'
|
lo=0
|
||||||
|
# certains articles sont encore là mais sont expirés (cf. expire.ctl)
|
||||||
|
# else
|
||||||
|
# lo="`ls -1 $d 2>/dev/null | sort -n | head | grep '^[1-9][0-9]*$' | head -1`" 2> /dev/null
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
md='y'
|
||||||
printf "%s %010d %010d %s\n" $gr $last $lo $md >> /tmp/active.new
|
printf "%s %010d %010d %s\n" $gr $last $lo $md >> /tmp/active.new
|
||||||
done < /var/lib/news/active
|
done < /var/lib/news/active
|
||||||
|
}
|
||||||
echo "affichage du diff"
|
|
||||||
echo " "
|
|
||||||
|
|
||||||
diff /tmp/active.new /var/lib/news/active
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
echo " "
|
|
||||||
|
|
||||||
diff /tmp/active.new /var/lib/news/active > /dev/null &&
|
|
||||||
{
|
|
||||||
echo "la version générée et la version en place sont identiques : on ne fait rien." ;
|
|
||||||
echo "redémarrage d'innd..."
|
|
||||||
/id/inn2 start
|
|
||||||
#ctlinnd go ''
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
diff /tmp/active.new /var/lib/news/active > /dev/null ||
|
|
||||||
{
|
|
||||||
echo "la version générée et la version en place diffèrent : il faut la remplacer" ;
|
|
||||||
echo "souhaitez-vous remplacer le fichier actuellement en place ? y/n" ;
|
|
||||||
read reply3;
|
|
||||||
case $reply3 in
|
|
||||||
y* | Y* | o* | O*)
|
|
||||||
echo "OK, on le remplace"
|
|
||||||
cp /tmp/active.new /var/lib/news/active
|
|
||||||
chown news.news /var/lib/news/active
|
|
||||||
chmod 664 /var/lib/news/active
|
|
||||||
;;
|
|
||||||
n* | N*)
|
|
||||||
echo "OK, on le laisse, mais il faut corriger cela !"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
echo "redémarrage d'innd..."
|
|
||||||
#ctlinnd go ''
|
|
||||||
/id/inn2 start
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue