скрипт уведомляет постановщика, исполнителя и наблюдателей о том, что сегодня deadline по задаче.
в первом select необходимо ("1","2","4") заменить на те id, при которых задача считается незавершенной. посмотреть соответствие id и названия статуса можно в таблице бд issue_statuses.
и не забудьте изменить переменные с параметрами доступа к бд и почтовому аккаунту.
#!/bin/bash
mysql_h="db.local"
mysql_l="redmine"
mysql_p="password"
mysql_db="redmine"
mail_h="mail.local"
mail_l="mail_login"
mail_p="mail_pass"
date=`date +%Y-%m-%d`
#директория в которой лежит скрипт
cd /usr/home/scripts/redmine/
mkdir -p data
rm -rf data/*
/usr/local/bin/mysql -h$mysql_h -u$mysql_l -p$mysql_p -D$mysql_db -e \
"select id,assigned_to_id,author_id from issues where due_date='$date' and status_id in ("1","2","4")" \
| grep -v id | while read l
do
issue_id=${l% * *}
mkdir data/$issue_id
echo '
redmine.local/issues/'$issue_id'' > data/$issue_id/body.html
assigned_to_id=${l% *}
assigned_to_id=${assigned_to_id#* }
echo $assigned_to_id >> data/$issue_id/id_list.txt
author_id=${l#* * }
echo $author_id >> data/$issue_id/id_list.txt
/usr/local/bin/mysql -h$mysql_h -u$mysql_l -p$mysql_p -D$mysql_db -e \
"select user_id from watchers where watchable_id='$issue_id'" \
| grep -v user_id | while read m
do
echo $m >> data/$issue_id/id_list.txt
done
cat data/$issue_id/id_list.txt | sort | uniq | while read n
do
let i++
if [ $i -eq 1 ]
then x=\"$n\"
else x=$x,\"$n\"
fi
echo $x > data/$issue_id/id_tmp.txt
done
/usr/local/bin/mysql -h$mysql_h -u$mysql_l -p$mysql_p -D$mysql_db -e \
"select mail from users where id in (`cat data/$issue_id/id_tmp.txt`)" \
| while read mail
do
if [ "$mail" != "mail" ]
then
/usr/local/bin/smtp-cli \
--missing-modules-ok --server=$mail_h --port=465 --ipv4 --ssl \
--user=$mail_l --pass=$mail_p --from="Redmine <$mail_l>" \
--to "$mail" --subject="Redmine DEADLINE Issue $issue_id" \
--body-html=data/$issue_id/body.html
fi
done
done