borgmatic/backup.sh - fix printf bug
Interpolation can and does insert % placeholders into the printf template text - although not valid ones as they're intended for python. So be more careful! Put all inserted text into the parameters to printf, or use echo. Also, keep some of the alterations used whilst diagnosing this.
This commit is contained in:
@@ -21,8 +21,8 @@ PARAM="$1"
|
||||
|
||||
# Helper function to prepend a timestamp and the first parameter to every line of STDIN
|
||||
indent() {
|
||||
while read -rs line; do
|
||||
printf "%s%s%s\n" "$(date -Iminutes)" "${1:- }" "$line"
|
||||
while IFS='' read -rs line; do
|
||||
echo "$(date -Iminutes)${1:- }$line"
|
||||
done
|
||||
}
|
||||
|
||||
@@ -37,14 +37,15 @@ log() {
|
||||
|
||||
report() {
|
||||
if [ "$RESULT" = "0" ]; then
|
||||
log echo "SUCCESS"
|
||||
log echo "SUCCESS!"
|
||||
PREFIX="$SUCCESS_PREFIX"
|
||||
else
|
||||
log echo "FAILED: $RESULT"
|
||||
PREFIX="$FAILED_PREFIX"
|
||||
fi
|
||||
printf "Subject: $PREFIX: '$PARAM'\n\n$(cat $LOGFILE)\n" |
|
||||
printf "Subject: %s: '%s'\n\n%s\n" "$PREFIX" "$PARAM" "$(cat $LOGFILE)" |
|
||||
sendmail -t "$MAIL_TO"
|
||||
log echo "Report sent."
|
||||
}
|
||||
|
||||
testmail() {
|
||||
@@ -60,8 +61,9 @@ failed() {
|
||||
|
||||
cleanup() {
|
||||
borgmatic break-lock
|
||||
echo "Done, removing $LOGFILE"
|
||||
echo "Removing $LOGFILE"
|
||||
rm -f "$LOGFILE"
|
||||
echo "Exiting."
|
||||
}
|
||||
|
||||
# Handle various kinds of exit
|
||||
@@ -86,9 +88,14 @@ case "$PARAM" in
|
||||
RESULT=$?
|
||||
report
|
||||
;;
|
||||
dummy-run)
|
||||
log echo STARTED: dummy-run
|
||||
borgmatic nonesuch
|
||||
RESULT=$?
|
||||
report
|
||||
;;
|
||||
*)
|
||||
log echo "UNKNOWN COMMAND: '$PARAM'"
|
||||
report
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
Reference in New Issue
Block a user