mirror of
https://github.com/whyour/qinglong.git
synced 2025-07-30 00:16:07 +08:00
Create run_scripts.sh
This commit is contained in:
parent
d159d260db
commit
7ea398ee42
275
shell/run_scripts.sh
Normal file
275
shell/run_scripts.sh
Normal file
|
@ -0,0 +1,275 @@
|
|||
#!/bin/bash
|
||||
# Version: v4.7.14
|
||||
# sed分隔符可修改
|
||||
# 青龙面板task补充
|
||||
|
||||
## 导入通用变量与函数
|
||||
dir_shell=/ql/shell
|
||||
. $dir_shell/share.sh
|
||||
|
||||
SCRIPT="$1"
|
||||
|
||||
# VIP人数,默认前面的
|
||||
VIPS=${JD_SH_VIP:-0}
|
||||
SCRIPT_NAME=`echo "${SCRIPT}" | awk -F "." '{print $1}'`
|
||||
|
||||
home="/ql"
|
||||
# 助力码文件目录
|
||||
SHCD_DIR="${home}/sharecode"
|
||||
|
||||
# 脚本文件初始目录
|
||||
SCRIPT_DIR="${home}/scripts"
|
||||
|
||||
# 推送脚本
|
||||
NOTIFY_SCRIPT="${SCRIPT_DIR}/${SCRIPT_NAME}_run_sendNotify.js"
|
||||
NOTIFY_SCRIPT_SPEC="${SCRIPT_DIR}/${SCRIPT_NAME}_run_sendNotify_spec.js"
|
||||
|
||||
LOG="${SHCD_DIR}/${SCRIPT_NAME}.log"
|
||||
MSG_DIR="${home}/JDmsg"
|
||||
NOTIFY_CONF="${MSG_DIR}/${SCRIPT_NAME}_dt.conf"
|
||||
|
||||
# 推送JS
|
||||
NOTIFY_JS="${SCRIPT_DIR}/${SCRIPT_NAME}_sendNotify.js"
|
||||
NOTIFY_JS_RETURN="${SCRIPT_DIR}/${SCRIPT_NAME}_return_sendNotify.js"
|
||||
|
||||
[ ! -d ${SHCD_DIR} ] && mkdir ${SHCD_DIR}
|
||||
[ ! -d ${MSG_DIR} ] && mkdir ${MSG_DIR}
|
||||
|
||||
# 格式化助力码
|
||||
autoHelp(){
|
||||
# $1 脚本文件,绝对路径
|
||||
# $2 助力码文件所在,绝对路径
|
||||
sr_file=$1
|
||||
sc_file=$2
|
||||
sc_list=(`cat "$sc_file" | while read LINE; do echo $LINE; done | awk -F "】" '{print $2}'`)
|
||||
sc_vip_list=(`echo ${sc_list[*]:0:VIPS}`)
|
||||
nums_of_user=`echo ${#sc_list[*]}`
|
||||
sc_normal_list=(`echo ${sc_list[*]:VIPS:nums_of_user}`)
|
||||
f_shcode=""
|
||||
IFS=$'\n'
|
||||
if [ -n `echo "$JD_COOKIE" | grep "&"` ]; then
|
||||
JK_LIST=(`echo "$JD_COOKIE" | awk -F "&" '{for(i=1;i<=NF;i++) print $i}'`)
|
||||
else
|
||||
JK_LIST=(`echo "$JD_COOKIE" | awk -F "$" '{for(i=1;i<=NF;i++){{if(length($i)!=0) print $i}}'`)
|
||||
fi
|
||||
if [ -n "$JK_LIST" ]; then
|
||||
diff=$((${#JK_LIST[*]}-$nums_of_user))
|
||||
for e in `seq 1 $diff`
|
||||
do
|
||||
sc_list+=(${sc_list[0]})
|
||||
unset sc_list[0]
|
||||
sc_list=(${sc_list[*]})
|
||||
f_shcode="$f_shcode""'""`echo ${sc_list[*]:0} | awk '{for(i=1;i<=NF;i++) {if(i==NF) printf $i;else printf $i"@"}}'`""',""\n"
|
||||
done
|
||||
fi
|
||||
# 优先为vip用户助力
|
||||
for e in `seq 1 $nums_of_user`
|
||||
do
|
||||
if [ $((VIPS-0)) -ge $e ]; then
|
||||
sc_vip_list+=(${sc_vip_list[0]})
|
||||
unset sc_vip_list[0]
|
||||
sc_vip_list=(${sc_vip_list[*]})
|
||||
else
|
||||
sc_normal_list+=(${sc_normal_list[0]})
|
||||
unset sc_normal_list[0]
|
||||
sc_normal_list=(${sc_normal_list[*]})
|
||||
fi
|
||||
final_sc_list=(`echo ${sc_vip_list[*]} ${sc_normal_list[*]}`)
|
||||
f_shcode="$f_shcode""'""`echo ${final_sc_list[*]:0} | awk '{for(i=1;i<=NF;i++) {if(i==NF) printf $i;else printf $i"@"}}'`""',""\n"
|
||||
done
|
||||
|
||||
unset IFS
|
||||
[ -n "$MY_SHARECODES" ] && f_shcode="$f_shcode""'$MY_SHARECODES',\n"
|
||||
sed -i "s/let shareCodes = \[/let shareCodes = \[\n${f_shcode}/g" "$sr_file"
|
||||
sed -i "s/const inviteCodes = \[/const inviteCodes = \[\n${f_shcode}/g" "$sr_file"
|
||||
sed -i "s/let inviteCodes = \[/let inviteCodes = \[\n${f_shcode}/g" "$sr_file"
|
||||
# 修改种豆得豆
|
||||
if [ "$1" = "jd_plantBean.js" ]; then
|
||||
sed -i "s/let PlantBeanShareCodes = \[/let PlantBeanShareCodes = \[\n${f_shcode}/g" "${SCRIPT_DIR}/jdPlantBeanShareCodes.js"
|
||||
fi
|
||||
# 修改东东萌宠
|
||||
if [ "$1" = "jd_pet.js" ]; then
|
||||
sed -i "s/let PetShareCodes = \[/let PetShareCodes = \[\n${f_shcode}/g" "${SCRIPT_DIR}/jdPetShareCodes.js"
|
||||
fi
|
||||
# 修改东东农场
|
||||
if [ "$1" = "jd_fruit.js" ]; then
|
||||
sed -i "s/let FruitShareCodes = \[/let FruitShareCodes = \[\n${f_shcode}/g" "${SCRIPT_DIR}/jdFruitShareCodes.js"
|
||||
fi
|
||||
# 修改京喜工厂
|
||||
if [ "$1" = "jd_dreamFactory.js" ]; then
|
||||
sed -i "s/let shareCodes = \[/let shareCodes = \[\n${f_shcode}/g" "${SCRIPT_DIR}/jdDreamFactoryShareCodes.js"
|
||||
fi
|
||||
# 修改东东工厂
|
||||
if [ "$1" = "jd_jdfactory.js" ]; then
|
||||
sed -i "s/let shareCodes = \[/let shareCodes = \[\n${f_shcode}/g" "${SCRIPT_DIR}/jdFactoryShareCodes.js"
|
||||
fi
|
||||
}
|
||||
|
||||
# 收集助力码
|
||||
collectSharecode(){
|
||||
echo "${1}:收集新助力码"
|
||||
code=`sed -n '/'码】'.*/'p ${1}`
|
||||
if [ -z "$code" ]; then
|
||||
activity=`sed -n '/配置文件.*/'p "${1}" | awk -F "获取" '{print $2}' | awk -F "配置" '{print $1}'`
|
||||
name=(`sed -n '/'【京东账号'.*/'p "${1}" | grep "开始" | awk -F "开始" '{print $2}' |sed 's/】/(/g'| awk -v ac="$activity" -F "*" '{print $1")" ac "好友助力码】"}'`)
|
||||
# 相邻重复去重
|
||||
code=(`sed -n '/'您的好友助力码为'.*/'p ${1} | awk '{print $2}' | uniq`)
|
||||
[ -z "$code" ] && code=(`sed -n '/'好友助力码'.*/'p ${1} | awk -F ":" '{print $2}' | uniq`)
|
||||
[ -z "$code" ] && return
|
||||
for i in `seq 0 $((${#name[*]}-1))`
|
||||
do
|
||||
[ -n "${code[i]}" ] && echo "${name[i]}""${code[i]}" >> ${LOG}
|
||||
done
|
||||
else
|
||||
echo $code | awk '{for(i=1;i<=NF;i++)print $i}' > ${LOG}
|
||||
fi
|
||||
}
|
||||
|
||||
# 清除连续空行为一行和首尾空行
|
||||
blank_lines2blank_line(){
|
||||
# $1: 文件名
|
||||
# 删除连续空行为一行
|
||||
cat -s $1 > $1.bk
|
||||
mv -f $1.bk $1
|
||||
#清除文首文末空行
|
||||
[ "$(cat $1 | head -n 1)"x = ""x ] && sed -i '1d' $1
|
||||
[ "$(cat $1 | tail -n 1)"x = ""x ] && sed -i '$d' $1
|
||||
}
|
||||
|
||||
# 判断是否需要特别推送
|
||||
specify_send(){
|
||||
ret=`cat $1 2>&1 | grep "提醒\|已超时\|已可兑换\|已失效\|重新登录\|已可领取\|未选择商品\|兑换地址\|未继续领养"`
|
||||
[ -n "$ret" ] && echo 1 || echo 0
|
||||
}
|
||||
|
||||
# 传入需要的环境变量
|
||||
deliver_env(){
|
||||
env_var=(`cat $1 | grep process.env | awk -F "." '{print $3}' | awk '{print $1}' | awk -F ";|)" '{print $1}' | grep "_" | sort -u | uniq`)
|
||||
for var in ${env_var[*]}
|
||||
do
|
||||
val=`eval echo '$'{$var}`
|
||||
[ -n $val ] && sed -i "s/let $var = ''/let ${var} = '${val}'/g" $1
|
||||
done
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main(){
|
||||
cd ${SCRIPT_DIR}
|
||||
|
||||
log_time=$(date "+%Y-%m-%d-%H-%M-%S")
|
||||
log_dir_tmp="${SCRIPT_NAME##*/}"
|
||||
log_dir="$dir_log/${log_dir_tmp%%.*}"
|
||||
log_path="$log_dir/$log_time.log.tmp"
|
||||
make_dir "$log_dir"
|
||||
|
||||
if [[ $SCRIPT == *.py ]]; then
|
||||
python3 $SCRIPT 2>&1 | tee ${log_path}
|
||||
if [ "$SCRIPT" == "jd_OpenCard.py" ]; then
|
||||
strat_end_line_list=(`cat $log_path | grep -n "本次统计\|入会总耗时" | awk -F ':' '{print $1}'`)
|
||||
TITLE="入会领京豆"
|
||||
CONTENT=`sed -n "${a},${a[-1]}p" ${log_path}`
|
||||
python3 -c "import SendMsg;send = SendMsg.SendMsg(\"${DD_BOT_TOKEN}\", \"${DD_BOT_SECRET}\");send.msg(\"${TITLE}\", \"${CONTENT}\")"
|
||||
fi
|
||||
rm -f ${log_path}
|
||||
return
|
||||
fi
|
||||
|
||||
# 备份
|
||||
cp -f ${SCRIPT_DIR}/${SCRIPT} ${SCRIPT_DIR}/${SCRIPT_NAME}_tmp.js
|
||||
|
||||
echo "修改发送方式"
|
||||
|
||||
#修改常规推送
|
||||
cat > ${NOTIFY_SCRIPT} <<EOF
|
||||
notify = require('${NOTIFY_JS}');
|
||||
fs = require('fs');
|
||||
var data = fs.readFileSync('${NOTIFY_CONF}');
|
||||
var name = fs.readFileSync('${NOTIFY_CONF}name');
|
||||
|
||||
notify.sendNotify(name, data.toString());
|
||||
EOF
|
||||
#修改特别推送
|
||||
cat > ${NOTIFY_SCRIPT_SPEC} <<EOT
|
||||
notify = require('${NOTIFY_JS}');
|
||||
fs = require('fs');
|
||||
var data = fs.readFileSync('${NOTIFY_CONF}spec');
|
||||
var name = fs.readFileSync('${NOTIFY_CONF}name');
|
||||
|
||||
notify.sendNotify(name, data.toString());
|
||||
EOT
|
||||
# 推送js复制
|
||||
cp -f ${SCRIPT_DIR}/sendNotify.js ${NOTIFY_JS}
|
||||
cp -f ${SCRIPT_DIR}/sendNotify.js ${NOTIFY_JS_RETURN}
|
||||
sed -i 's/text = text.match/\/\/text = text.match/g' ${NOTIFY_JS_RETURN}
|
||||
|
||||
# 删除旧消息
|
||||
rm -f ${NOTIFY_CONF}*
|
||||
|
||||
sed -i "s/desp += author/\/\/desp += author/g" ${NOTIFY_JS}
|
||||
sed -i "/text = text.match/a var fs = require('fs');fs.writeFile(\"${NOTIFY_CONF}name\", text + \"\\\n\", function(err) {if(err) {return console.log(err);}});fs.appendFile(\"${NOTIFY_CONF}\" + new Date().getTime(), desp + \"\\\n\", function(err) {if(err) {return console.log(err);}});\n return" ${NOTIFY_JS_RETURN}
|
||||
sed -i "s#.\/sendNotify#${NOTIFY_JS_RETURN}#g" ${SCRIPT_DIR}/${SCRIPT_NAME}_tmp.js
|
||||
[ ! -e "./$SCRIPT" ] && echo "脚本不存在" && exit 0
|
||||
|
||||
echo "替换助力码"
|
||||
[ -e "${SHCD_DIR}/${SCRIPT_NAME}.log" ] && autoHelp "${SCRIPT_DIR}/${SCRIPT_NAME}_tmp.js" "${SHCD_DIR}/${SCRIPT_NAME}.log"
|
||||
|
||||
echo "开始运行"
|
||||
(node ${SCRIPT_DIR}/${SCRIPT_NAME}_tmp.js | grep -Ev "pt_pin|pt_key") >&1 | tee ${log_path}
|
||||
|
||||
# 整合推送消息
|
||||
IFS=$'\n'
|
||||
for n in `ls ${MSG_DIR} | grep ${SCRIPT_NAME}_dt.conf | grep -v ${SCRIPT_NAME}_dt.confname`
|
||||
do
|
||||
echo "正在处理${MSG_DIR}/${n}文本"
|
||||
if [ $(specify_send ${MSG_DIR}/${n}) -eq 0 ];then
|
||||
cat ${MSG_DIR}/${n} >> ${NOTIFY_CONF}
|
||||
else
|
||||
cat ${MSG_DIR}/${n} >> ${NOTIFY_CONF}spec
|
||||
fi
|
||||
# 清空文件
|
||||
rm -f ${MSG_DIR}/${n}
|
||||
done
|
||||
unset IFS
|
||||
|
||||
echo "推送消息"
|
||||
sed -i 's/text}\\n\\n/text}\\n/g' ${NOTIFY_JS}
|
||||
sed -i 's/\\n\\n本脚本/\\n本脚本/g' ${NOTIFY_JS}
|
||||
sed -i 's/text = text.match/\/\/text = text.match/g' ${NOTIFY_JS}
|
||||
|
||||
# 传递变量
|
||||
deliver_env ${NOTIFY_JS}
|
||||
|
||||
if [ -e ${NOTIFY_CONF} -a -n "$(cat ${NOTIFY_CONF} 2>&1 | sed '/^$/d')" ]; then
|
||||
blank_lines2blank_line ${NOTIFY_CONF}
|
||||
blank_lines2blank_line ${NOTIFY_CONF}name
|
||||
cat ${NOTIFY_CONF}
|
||||
node ${NOTIFY_SCRIPT}
|
||||
fi
|
||||
# 特殊推送
|
||||
if [ -e ${NOTIFY_CONF}spec -a -n "$(cat ${NOTIFY_CONF}spec 2>&1 | sed '/^$/d')" ]; then
|
||||
blank_lines2blank_line ${NOTIFY_CONF}spec
|
||||
blank_lines2blank_line ${NOTIFY_CONF}name
|
||||
cat ${NOTIFY_CONF}spec
|
||||
if [ -n "$DD_BOT_TOKEN_SPEC" -a -n "$DD_BOT_SECRET_SPEC" ]; then
|
||||
sed -i "s/DD_BOT_TOKEN/DD_BOT_TOKEN_SPEC/g" ${NOTIFY_JS}
|
||||
sed -i "s/DD_BOT_SECRET/DD_BOT_SECRET_SPEC/g" ${NOTIFY_JS}
|
||||
sed -i "s/let DD_BOT_TOKEN_SPEC/let DD_BOT_TOKEN_SPEC_OLD/g" ${NOTIFY_JS}
|
||||
sed -i "s/let DD_BOT_SECRET_SPEC/let DD_BOT_SECRET_SPEC_OLD/g" ${NOTIFY_JS}
|
||||
sed -i "/let DD_BOT_TOKEN_SPEC_OLD/a let DD_BOT_TOKEN_SPEC = '${DD_BOT_TOKEN_SPEC}'" ${NOTIFY_JS}
|
||||
sed -i "/let DD_BOT_SECRET_SPEC_OLD/a let DD_BOT_SECRET_SPEC = '${DD_BOT_SECRET_SPEC}'" ${NOTIFY_JS}
|
||||
fi
|
||||
node ${NOTIFY_SCRIPT_SPEC}
|
||||
fi
|
||||
|
||||
echo "删除旧文件"
|
||||
rm -f ${SCRIPT_DIR}/${SCRIPT_NAME}_tmp.js
|
||||
rm -f ${NOTIFY_JS}
|
||||
rm -f ${NOTIFY_JS_RETURN}
|
||||
rm -f ${NOTIFY_SCRIPT}
|
||||
rm -f ${NOTIFY_SCRIPT_SPEC}
|
||||
|
||||
# 助力码收集
|
||||
collectSharecode ${log_path}
|
||||
rm -f ${log_path}
|
||||
}
|
||||
main
|
Loading…
Reference in New Issue
Block a user