Salut tout le monde,
J’ai un problème avec un script Bash qui duplique mon disque monté sur /srv vers un disque externe. Je vous en livre les points forts :
J’ai une fonction capable de lancer la sauvegarde des données d’un service vers le disque externe après avoir arrêté ce service. Cela s’adapte donc au type du service (démon classique ou géré par inetd).
[code]function sauvegarde {
# $1 nom du service
# $2 type de service
# 0 - pas de service
# 1 - demon ordinaire
# 2 - gere par inetd
# $3 repertoire source
# Arret du service
if [ $2 -eq 1 ]
then
service $1 stop >/dev/null 2>>$log
elif [ $2 -eq 2 ]
then
update-inetd --disable --multi $1 >/dev/null 2>>$log
fi
# Sauvegarde
echo "-- Sauvegarde de $3" >>$log
rsync \
--exclude='*~' --delete-before --delete-excluded --stats --partial \
-roglpthH $3 /mnt/backup/ >>$log
echo >>$log
# Reprise du service
if [ $2 -eq 1 ]
then
service $1 start >/dev/null 2>>$log
elif [ $2 -eq 2 ]
then
update-inetd --enable $1 >/dev/null 2>>$log
fi
}
[/code]
Puis, tour à tour, je lance la sauvegarde de chaque élément :
sauvegarde data 0 /srv/data
sauvegarde git 2 /srv/git
sauvegarde mail 0 /srv/mail
sauvegarde mpd 1 /srv/mpd
sauvegarde partimaged 1 /srv/partimage
sauvegarde prosody 1 /srv/prosody
sauvegarde git 2 /srv/reseau
sauvegarde rsync 0 /srv/rsync
sauvegarde sauvegardes 0 /srv/sauvegardes
sauvegarde scripts 0 /srv/scripts
sauvegarde svn 2 /srv/svn
sauvegarde transmission-daemon 1 /srv/transmission
sauvegarde apache2 1 /srv/www
Mon problème :
Chaque service géré par inetd (dont la sauvegarde est faite avec le paramètre 2), produit cette sortie :
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
Cela fonctionne donc mais j’ai un avertissement de la part de debconf qui a le don de m’énerver et je tiens à m’en défaire. Si TERM n’est pas renseigné, je pense que c’est parce que je ne lance pas le script moi-même, c’est Udev qui s’en charge lorsqu’il reconnaît mon disque dur externe.
Voici la règle Udev qui appelle mon script :
J’ai bien envisagé de carrément couper inetd mais le but de mon script est justement d’arrêter tour à tour les services… Donc ce n’est pas cohérent. Autre idée : donner une valeur quelconque à TERM mais c’est horrible 
Je voudrais donc :
- soit trouver le paramètre ou la configuration inetd qui va bien pour ne plus être gêné par cet avertissement ;
- soit débattre avec vous de ce qui ressemble pour moi à un bug update-inetd…
Merci d’avance pour votre aide !