From 2bfb5ae276237574dc7c1969f7bdc047eb756cdd Mon Sep 17 00:00:00 2001 From: lxk0301 <778732665@qq.com> Date: Wed, 10 Mar 2021 10:10:05 +0800 Subject: [PATCH] =?UTF-8?q?docker=E5=8D=95=E5=AE=B9=E5=99=A8=E5=A4=9A?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E8=87=AA=E5=8A=A8=E5=8A=A9=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/Readme.md | 6 ++ docker/auto_help.sh | 156 +++++++++++++++++++++++++++++++++++++++++ docker/crontab_list.sh | 2 + docker/default_task.sh | 23 ++++-- 4 files changed, 181 insertions(+), 6 deletions(-) create mode 100644 docker/auto_help.sh diff --git a/docker/Readme.md b/docker/Readme.md index dd47e7d7..08cac005 100644 --- a/docker/Readme.md +++ b/docker/Readme.md @@ -1,6 +1,12 @@ ![Docker Pulls](https://img.shields.io/docker/pulls/lxk0301/jd_scripts?style=for-the-badge) ### Usage ```diff ++ 2021-03-9更新 新版docker但容器多账号自动互助 ++开启方式:docker-compose.yml 中添加环境变量 - ENABLE_AUTO_HELP=true ++助力原则:不考虑需要被助力次数与提供助力次数 假设有3个账号,则生成: ”助力码1@助力码2@助力码3&助力码1@助力码2@助力码3&助力码1@助力码2@助力码3“ ++原理说明:1、定时调用 /scripts/docker/auto_help.sh collect 收集各个活动的助力码,整理、去重、排序、保存到 /scripts/logs/sharecodeCollection.log; + 2、(由于linux进程限制,父进程无法获取子进程环境变量)在每次脚本运行前,在当前进程先调用 /scripts/docker/auto_help.sh export 把助力码注入到环境变量 + + 2021-02-21更新 https://gitee.com/lxk0301/jd_scripts仓库被迫私有,老用户重新更新一下镜像:https://hub.docker.com/r/lxk0301/jd_scripts)(docker-compose.yml的REPO_URL记得修改)后续可同步更新jd_script仓库最新脚本 + 2021-02-10更新 docker-compose里面,填写环境变量 SHARE_CODE_FILE=/scripts/logs/sharecode.log, 多账号可实现自己互助(只限sharecode.log日志里面几个活动) + 2021-01-22更新 CUSTOM_LIST_FILE 参数支持远程定时任务列表 (⚠️务必确认列表中的任务在仓库里存在) diff --git a/docker/auto_help.sh b/docker/auto_help.sh new file mode 100644 index 00000000..95bb149d --- /dev/null +++ b/docker/auto_help.sh @@ -0,0 +1,156 @@ +#set -e + +#日志路径 +logDir="/scripts/logs" + +# 处理后的log文件 +logFile=${logDir}/sharecodeCollection.log + + + +if [ -n "$1" ]; then + parameter=${1} +else + echo "没有参数" +fi + + + +# 收集助力码 +collectSharecode(){ + if [ -f ${2} ]; then + echo "${1}:清理旧助力码,收集新助力码" + #删除旧助力码 + sed -i '/'"${1}"'/d' ${logFile} + + sed -n '/'${1}'.*/'p ${2} | sed 's/京东账号/京东账号 /g' | sed 's/(/ (/g' | sed 's/】/】 /g' | awk '{print $4,$5,$6,$7}' | sort -gk2 | awk '!a[$2" "$3]++{print}' >>$logFile + else + echo "${1}:${2} 文件不存在,不清理旧助力码" + fi + + +} + + +# 导出助力码 +exportSharecode(){ + if [ -f ${logFile} ]; then + #账号数 + cookiecount=$(echo ${JD_COOKIE} | awk -F '&' '{print NF}') + # 单个账号助力码 + singleSharecode=$(sed -n '/'${1}'.*/'p ${logFile} | awk '{print $4}' | awk '{T=T"@"$1} END {print T}' | awk '{print substr($1,2)}') +# | awk '{print $2,$4}' | sort -g | uniq +# echo "singleSharecode:${singleSharecode}" + + # 拼接多个账号助力码 + num=1 + while [ ${num} -le ${cookiecount} ]; do + local allSharecode=${allSharecode}"&"${singleSharecode} + num=`expr $num + 1` + done + + allSharecode=$(echo ${allSharecode} | awk '{print substr($1,2)}') + + # echo "${1}:${allSharecode}" + + #判断合成的助力码长度是否大于账号数,不大于,则可知没有助力码 + if [ ${#allSharecode} -gt ${cookiecount} ]; then + echo "${1}:导出助力码" + export ${3}=${allSharecode} + else + echo "${1}:没有助力码,不导出" + fi + + else + echo "${1}:${logFile} 不存在,不导出助力码" + fi + + + +} + + + +#生成助力码 +autoHelp(){ + if [ ${parameter} == "collect" ]; then + +# echo "收集助力码" + collectSharecode ${1} ${2} ${3} + + elif [ ${parameter} == "export" ]; then + +# echo "导出助力码" + exportSharecode ${1} ${2} ${3} + fi +} + + + + + +#日志需要为这种格式才能自动提取 +#Mar 07 00:15:10 【京东账号1(xxxxxx)的京喜财富岛好友互助码】3B41B250C4A369EE6DCA6834880C0FE0624BAFD83FC03CA26F8DEC7DB95D658C + + + +#新增自动助力活动格式 +# autoHelp 关键词 日志路径 变量名 + + +############# 短期活动 ############# + + + + + + +############# 长期活动 ############# + +#东东农场 +autoHelp "东东农场好友互助码" "${logDir}/jd_fruit.log" "FRUITSHARECODES" + +#东东萌宠 +autoHelp "东东萌宠好友互助码" "${logDir}/jd_pet.log" "PETSHARECODES" + +#种豆得豆 +autoHelp "京东种豆得豆好友互助码" "${logDir}/jd_plantBean.log" "PLANT_BEAN_SHARECODES" + +#京喜工厂 +autoHelp "京喜工厂好友互助码" "${logDir}/jd_dreamFactory.log" "DREAM_FACTORY_SHARE_CODES" + +#东东工厂 +autoHelp "东东工厂好友互助码" "${logDir}/jd_jdfactory.log" "DDFACTORY_SHARECODES" + +#crazyJoy +autoHelp "crazyJoy任务好友互助码" "${logDir}/jd_crazy_joy.log" "JDJOY_SHARECODES" + +#京喜财福岛 +autoHelp "京喜财富岛好友互助码" "${logDir}/jd_cfd.log" "JDCFD_SHARECODES" + +#京喜农场 +autoHelp "京喜农场好友互助码" "${logDir}/jd_jxnc.log" "JXNC_SHARECODES" + +#京东赚赚(助力下线) +#autoHelp "京东赚赚好友互助码" "${logDir}/jd_jdzz.log" "JDZZ_SHARECODES" + + + + + + + +######### 日志打印格式需调整 ######### + +#口袋书店 +#autoHelp "" "${logDir}/jd_bookshop.log" "BOOKSHOP_SHARECODES" + +#领现金 +#autoHelp "" "${logDir}/jd_cash.log" "JD_CASH_SHARECODES" + +#闪购盲盒 +#autoHelp "" "${logDir}/jd_sgmh.log" "JDSGMH_SHARECODES" + + + + diff --git a/docker/crontab_list.sh b/docker/crontab_list.sh index 0c34109c..6352f27b 100644 --- a/docker/crontab_list.sh +++ b/docker/crontab_list.sh @@ -1,5 +1,7 @@ # 每3天的23:50分清理一次日志(互助码不清理,proc_file.sh对该文件进行了去重) 50 23 */3 * * find /scripts/logs -name '*.log' | grep -v 'sharecode' | xargs rm -rf +#收集助力码 +30 * * * * sh +x /scripts/docker/auto_help.sh collect >> /scripts/logs/auto_help.log 2>&1 ##############短期活动############## diff --git a/docker/default_task.sh b/docker/default_task.sh index 65703ca3..b997d36e 100644 --- a/docker/default_task.sh +++ b/docker/default_task.sh @@ -47,14 +47,14 @@ fi -echo "第3步判断是否配置了随即延迟参数..." +echo "第3步判断是否配置了随机延迟参数..." if [ $RANDOM_DELAY_MAX ]; then if [ $RANDOM_DELAY_MAX -ge 1 ]; then echo "已设置随机延迟为 $RANDOM_DELAY_MAX , 设置延迟任务中..." sed -i "/\(jd_bean_sign.js\|jd_blueCoin.js\|jd_joy_reward.js\|jd_joy_steal.js\|jd_joy_feedPets.js\|jd_car_exchange.js\)/!s/node/sleep \$((RANDOM % \$RANDOM_DELAY_MAX)); node/g" $mergedListFile fi else - echo "未配置随即延迟对应的环境变量,故不设置延迟任务..." + echo "未配置随机延迟对应的环境变量,故不设置延迟任务..." fi echo "第4步判断是否配置自定义shell执行脚本..." @@ -110,16 +110,27 @@ echo -e "\n# 必须要的默认定时任务请勿删除" >> $mergedListFile echo -e "${random_m} ${random_h} * * * docker_entrypoint.sh >> /scripts/logs/default_task.log 2>&1" | tee -a $mergedListFile -echo "第7步增加 |ts 任务日志输出时间戳..." +echo "第7步 自动助力" +if [ $ENABLE_AUTO_HELP = "true" ]; then + echo "开启自动助力" + + #在所有脚本执行前,先执行助力码导出 + sed -i 's/node/ . \/scripts\/docker\/auto_help.sh export \&\& node /g' ${mergedListFile} +else + echo "未开启自动助力" +fi + + +echo "第8步增加 |ts 任务日志输出时间戳..." sed -i "/\( ts\| |ts\|| ts\)/!s/>>/\|ts >>/g" $mergedListFile -echo "第8步执行proc_file.sh脚本任务..." +echo "第9步执行proc_file.sh脚本任务..." sh -x /scripts/docker/proc_file.sh -echo "第9步加载最新的定时任务文件..." +echo "第10步加载最新的定时任务文件..." crontab $mergedListFile -echo "第10步将仓库的docker_entrypoint.sh脚本更新至系统/usr/local/bin/docker_entrypoint.sh内..." +echo "第11步将仓库的docker_entrypoint.sh脚本更新至系统/usr/local/bin/docker_entrypoint.sh内..." cat /scripts/docker/docker_entrypoint.sh >/usr/local/bin/docker_entrypoint.sh echo "发送通知"