Je verrais bien une solution "à l'envers" à ton problème :P
Comme tu n'as pas forcément besoin immédiatement de la sortie de la commande tar pour tes logs, c'est celle-ci que j'enverrais dans un fichier temporaire.
Après, il suffit de lire les messages stderr et de les formatter comme bon te semble.
Voici ce que cela donnerait (à tester !):
# Je crée un fichier temporaire
sortie_de_tar=$(mktemp -q)
if [ ${?} -ne 0 ]; then
echo Pas de bol '!'
fi
# Je lance l'archivage (attention a l'ordre des redirections !)
tar -czvf /home/MonHome.tar.gz /tmp/ 2>&1 >"${sortie_de_tar}" \
| while read ligne_erreur; do
# Ici, formattage de la ligne
echo $(date) $(hostname) ${ligne_erreur} >> "${LOGDIR}"
done
# Après, soit:
TAR=$(< "${sortie_de_tar}")
# ou
TAR=$(cat "${sortie_de_tar}")
# à l'envers ;-)
Posté par Steve Azriel . En réponse au message stderr dans une variable. Évalué à 3.
Je verrais bien une solution "à l'envers" à ton problème :P
Comme tu n'as pas forcément besoin immédiatement de la sortie de la commande tar pour tes logs, c'est celle-ci que j'enverrais dans un fichier temporaire.
Après, il suffit de lire les messages stderr et de les formatter comme bon te semble.
Voici ce que cela donnerait (à tester !):
# Je crée un fichier temporaire
sortie_de_tar=$(mktemp -q)
if [ ${?} -ne 0 ]; then
echo Pas de bol '!'
fi
# Je lance l'archivage (attention a l'ordre des redirections !)
tar -czvf /home/MonHome.tar.gz /tmp/ 2>&1 >"${sortie_de_tar}" \
| while read ligne_erreur; do
# Ici, formattage de la ligne
echo $(date) $(hostname) ${ligne_erreur} >> "${LOGDIR}"
done
# Après, soit:
TAR=$(< "${sortie_de_tar}")
# ou
TAR=$(cat "${sortie_de_tar}")
# Petit ménage
rm "${sortie_de_tar}"
# La suite ici...
Qu'en penses tu ?
Bon courage !
Cdlt,