Задать вопрос
Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (3)

Лучшие ответы пользователя

Все ответы (1)
  • Оповещение о просроченных задачах в Redmine

    @rustamxp
    скрипт уведомляет постановщика, исполнителя и наблюдателей о том, что сегодня 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
    Ответ написан
    2 комментария