diff --git a/shell/api.sh b/shell/api.sh index a06f7a7e..7aff9e04 100755 --- a/shell/api.sh +++ b/shell/api.sh @@ -49,6 +49,39 @@ add_cron_api() { fi } +update_cron_api() { + local currentTimeStamp=$(date +%s) + if [ $# -eq 1 ]; then + local schedule=$(echo "$1" | awk -F ":" '{print $1}') + local command=$(echo "$1" | awk -F ":" '{print $2}') + local name=$(echo "$1" | awk -F ":" '{print $3}') + local id=$(echo "$1" | awk -F ":" '{print $4}') + else + local schedule=$1 + local command=$2 + local name=$3 + local id=$4 + fi + + local api=$(curl -s "http://localhost:5600/api/crons?t=$currentTimeStamp" \ + -X 'PUT' \ + -H "Accept: application/json" \ + -H "Authorization: Bearer $token" \ + -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" \ + -H "Content-Type: application/json;charset=UTF-8" \ + -H "Origin: http://localhost:5700" \ + -H "Referer: http://localhost:5700/crontab" \ + -H "Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7" \ + --data-raw "{\"name\":\"$name\",\"command\":\"$command\",\"schedule\":\"$schedule\",\"_id\":\"$id\"}" \ + --compressed) + code=$(echo $api | jq -r .code) + if [[ $code == 200 ]]; then + echo -e "$name 添加成功" + else + echo -e "$name 添加失败" + fi +} + del_cron_api() { local id=$1 local currentTimeStamp=$(date +%s) diff --git a/shell/update.sh b/shell/update.sh index 5b8fba5d..ace24606 100755 --- a/shell/update.sh +++ b/shell/update.sh @@ -204,7 +204,10 @@ update_raw() { if [[ $? -eq 0 ]]; then mv "$dir_raw/${raw_file_name}.new" "$dir_raw/${raw_file_name}" echo -e "下载 ${raw_file_name} 成功...\n" - cp -f $raw_file_name $dir_scripts/raw_${filename} + cd $dir_raw + local filename="raw_${raw_file_name}" + local cron_id=$(cat $list_crontab_user | grep -E "$cmd_task $filename$" | perl -pe "s|.*ID=(.*) $cmd_task $filename$|\1|") + cp -f $raw_file_name $dir_scripts/${filename} cron_line=$( perl -ne "{ print if /.*([\d\*]*[\*-\/,\d]*[\d\*] ){4}[\d\*]*[\*-\/,\d]*[\d\*]( |,|\").*$raw_file_name/ @@ -217,7 +220,11 @@ update_raw() { cron_name=$(grep "new Env" $raw_file_name | awk -F "'|\"" '{print $2}' | head -1) [[ -z $cron_name ]] && cron_name="$raw_file_name" [[ -z $cron_line ]] && cron_line="0 6 * * *" - add_cron_api "$cron_line:$cmd_task raw_$raw_file_name:$cron_name" + if [[ -z $cron_id ]]; then + add_cron_api "$cron_line:$cmd_task $filename:$cron_name" + else + # update_cron_api "$cron_line:$cmd_task $filename:$cron_name:$cron_id" + fi else echo -e "下载 ${raw_file_name} 失败,保留之前正常下载的版本...\n" [ -f "$dir_raw/${raw_file_name}.new" ] && rm -f "$dir_raw/${raw_file_name}.new"