Написал маленький шелл скрипт, для блокировки юзеров, которые не платят! Имеется возможность делать исключения для некоторых юзеров.
Но требуется Ваша критика и предложения чтобы улучшить его.
Система выглядит следующим образом:
1) Скрипт заносится в крон или еще куда-нибудь, где он периодически запускается, по Вашему усмотрению (у меня это каждый месяц 5-го числа)
2) После старта, скрипт делает выборку юзеров из БД которые вносили хоть какой-нибудь платеж > 0, за определенный промежуток времени (указывается в скрипте FROM_DATE and TO_DATE). Далее записывает результат в файл (output.out)
3) Далее к списку юзеров которые вносили платеж добавляются id тех юзеров которым надо сделать исключения (из файла exclude.act, надо создать в ручную, и указать account_id юзеров через enter). Все это дело компануется в файл temp.out
4) Потом делаем выборку из БД всех юзеров, которые не заблокированы и не удалены (помещаем все это дело в accounts.out)
5) Далее компануем два файла temp.out и accounts.out, в результате чего получаем файл в котором будут аккаунты которые следует заблокировать (все это дело пишется в файл utbfile.out)
6) Все, считываем файл utbfile.out и с помощью программы u5sh.jar блокируем юзеров.
Вот скрипт:
#!/bin/bash
MYSQL="/usr/bin/mysql"
DB_NAME="UTM5"
FROM_DATE="`/bin/date +"%Y-%m"`-01 00:00:00"
TO_DATE="`/bin/date +"%Y-%m"`-05 23:59:59"
USERS_TO_BLOCK_FILE="utbfile.out"
TEMP_FILE="temp.out"
ACCOUNTS_FILE="accounts.out"
OUTPUT_FILE="output.out"
EXCLUDE_FILE="exclude.act"
LOG_FILE="blocker.log"
ECHO="/bin/echo"
CAT="/bin/cat"
SORT="/usr/bin/sort"
UNIQ="/usr/bin/uniq"
JAVA="/usr/bin/java"
BLOCKER="/usr/local/blocker/u5sh.jar"
# -------------- Creating log file ---------------
$ECHO "Today is: `date +"%F"`" > $LOG_FILE
# -------------- Selecting users from UTM5 which has been pay for this month --------
$MYSQL $DB_NAME -Bs -q --exec \
"SELECT account_id FROM payment_transactions WHERE (payment_enter_date BETWEEN UNIX_TIMESTAMP('$FROM_DATE') AND UNIX_TIMESTAMP('$TO_DATE')) AND payment_incurrency > 0;" \
> $OUTPUT_FILE 2>>$LOG_FILE
$ECHO " - Query was successful (1)" >> $LOG_FILE
# -------------- Creating file with unique id's -------------
$CAT $EXCLUDE_FILE $OUTPUT_FILE | $SORT | $UNIQ > $TEMP_FILE 2>>$LOG_FILE
$ECHO " - Unique file was created successful" >> $LOG_FILE
# -------------- Creating file with users accounts, where account exist and not blocked ----------------
$MYSQL $DB_NAME -Bs -q --exec \
"SELECT id FROM accounts WHERE (is_blocked LIKE 0) AND (is_deleted NOT LIKE 1);" \
> $ACCOUNTS_FILE 2>>$LOG_FILE
$ECHO " - Query was successful (2)" >> $LOG_FILE
# ------------- Creating file with accounts id to block -------------------
$CAT $TEMP_FILE $ACCOUNTS_FILE | $SORT | $UNIQ -u > $USERS_TO_BLOCK_FILE 2>>$LOG_FILE
$ECHO " - File with users to block was successfully created" >> $LOG_FILE
# ------------------- It's time to block bad users >=| -----------------
while read AID; do
$JAVA -jar $BLOCKER --ChangeAccount -aid $AID -block 256 2>>$LOG_FILE
wait
done < $USERS_TO_BLOCK_FILE
$ECHO " - Users successfully blocked `date +"%F"`" >> $LOG_FILE
exit 0
Я специально писал каждый раз в разные файло, чтобы потом легче было отлаживать... Хотя и лог практически везде пишется
У меня все это дело было свалено в одну папку
P.S.> Особая благодарность Magnum72, если бы не u5sh.jar, то не было бы ентого скриптега
Ваше мнение?