Bonjour,
J'ai un script qui se lance au branchement d'un disque usb, à la fin du script j'envoie une notification par mail qui contient différentes informations avec cette ligne :
Règle Udev
SUBSYSTEM!="block|scsi", GOTO="usb_end" ENV{DEVTYPE}=="partition", GOTO="usb_end" ACTION!="add", GOTO="usb_end"
ACTION=="add",ATTRS{busnum}!="",ATTRS{devnum}!="",ATTRS{idProduct}=="10b8",ATTRS{idVendor}=="1058",ATTRS{serial}=="575841314535344D434C3632",RUN+="/usr/bin/sh /root/launch-backup.sh"
ACTION=="add",ATTRS{busnum}!="",ATTRS{devnum}!="",ATTRS{idProduct}=="0748",ATTRS{idVendor}=="1058",ATTRS{serial}=="575838314139324C31353233",RUN+="/usr/bin/sh /root/launch-backup.sh"
ACTION=="add",ATTRS{busnum}!="",ATTRS{devnum}!="",ATTRS{idProduct}=="1078",ATTRS{idVendor}=="1058",ATTRS{serial}=="57584631453135435348584C",RUN+="/usr/bin/sh /root/launch-backup.sh"
LABEL="usb_end"
launch-backup.sh n'est qu'un script intermédiaire qui passe par "at" pour contourner le timeout des règles udev
script de backup
#!/bin/bash
BIN="/usr/bin"
DIRLOG="/var/log/backup.log"
LOGGER="/usr/bin/logger"
${BIN}/sleep 10
NBRSYNC=`${BIN}/ps faux | ${BIN}/grep rsync | ${BIN}/wc -l`
if [ ${NBRSYNC} -eq 2 ]
then
${BIN}/echo "Début de la sauvegarde" > ${DIRLOG}
${BIN}/echo `${BIN}/date` >> ${DIRLOG}
${LOGGER} -i -t backup -p local0.info "Début de la sauvegarde"
${LOGGER} -i -t backup -p local0.info "Montage du disque"
MOUNT=`${BIN}/mount /dev/sauvegardeUSB /media/usb >> ${DIRLOG} 2>&1`
if [ ${?} -ne 0 ]
then
${LOGGER} -i -t backup -p local0.err "Erreur lors du montage du disque, voir le fichier ${DIRLOG}"
SUBJECT="ERREUR"
else
RSYNC=`${BIN}/rsync -ah --stats /media/backup/* /media/usb >> ${DIRLOG} 2>&1`
if [ ${?} -ne 0 ]
then
${LOGGER} -i -t backup -p local0.err "Erreur lors de la copie des fichiers, voir le fichier ${DIRLOG}"
SUBJECT="ERREUR"
fi
${LOGGER} -i -t backup -p local0.info "Démontage du disque"
UMOUNT=`${BIN}/umount /media/usb >> ${DIRLOG} 2>&1`
if [ ${?} -ne 0 ]
then
${LOGGER} -i -t backup -p local0.err "Erreur lors du démontage du disque, voir le fichier ${DIRLOG}"
SUBJECT="ERREUR"
fi
fi
${BIN}/echo "---------------------" >> ${DIRLOG}
${BIN}/echo `date` >> ${DIRLOG}
${BIN}/echo "Fin de la sauvegarde" >> ${DIRLOG}
${LOGGER} -i -t backup -p local0.info "Fin de la sauvegarde"
${BIN}/cat ${DIRLOG} | ${BIN}/mail -s "Rapport de sauvegarde ${SUBJECT}" MONMAIL
fi
Quand je lance le script à la main en root le résultat du cat en bien dans le contenue du mail mais lorsque c'est la règle udev qui m'envoie le mail le contenue est en pièce jointe dans un format binaire.
Je vois pas trop la différence qu'il peut avoir entre ces deux contextes ?
# Infos complémentaires ?
Posté par Vroum . Évalué à 1.
Ce serait mieux avec ta règle udev au complet et éventuellement les logs syslog s'il y en a…
[^] # Re: Infos complémentaires ?
Posté par Philippe M (site web personnel) . Évalué à 1.
Message d'origine modifié et pas de syslog intéressant si ce n'est pour dire que tout va bien
Born to Kill EndUser !
[^] # Re: Infos complémentaires ?
Posté par Vroum . Évalué à 1.
Tout d'abord, je ne comprends pas bien l'intérêt du ${BIN} mais tu dois avoir une raison de tout surcharger et notamment sur le fait d'avoir les coreutils (
sleep
,mount
, …) dans/usr/bin
plutôt que dans/bin
.Tu as peut-être un problème de locale. Essaye d'exporter LC_ALL en début de script.
Ou sinon dans un premier temps, commence par ajouter les options -v et -d à ta commande
mail
.[^] # Re: Infos complémentaires ?
Posté par Philippe M (site web personnel) . Évalué à 1.
Dans tout mes scripts je mets systématiquement le chemin d'accès au programme que je veux utiliser. Il s'avère que sur rhel ils se trouvent de /usr/bin et non dans /bin.
Je vais tester le -v -d et LC_ALL.
Born to Kill EndUser !
# La solution
Posté par Philippe M (site web personnel) . Évalué à 1.
Au cas ou le problème est causé par les accents que j'ai mis dans le script. La solution la plus simple est de na pas mettre d'accents.
Born to Kill EndUser !
[^] # Re: La solution
Posté par Vroum . Évalué à 1.
Vérifie bien que ton fichier de script est en utf8. Au pire, tu peux changer de mailer et tpasser par mutt pour gérer les pièces-jointes en MIME (option -a).
Merci d'avoir poster l'origine du problème.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.