2024-07-25 21:56:21 +08:00
|
|
|
|
#!/bin/bash
|
2025-05-19 22:41:57 +08:00
|
|
|
|
# 接收参数
|
|
|
|
|
local_path=$1
|
|
|
|
|
selected_script=$2
|
2025-05-19 01:41:13 +08:00
|
|
|
|
|
2025-05-19 22:41:57 +08:00
|
|
|
|
# 脚本路径配置
|
2024-11-18 23:12:52 +08:00
|
|
|
|
read -p "请输入脚本存放路径(默认:/var/script):" script_path
|
2024-07-25 21:56:21 +08:00
|
|
|
|
|
2024-11-18 23:12:52 +08:00
|
|
|
|
if [[ -z $script_path ]];then
|
|
|
|
|
script_path='/var/script'
|
2024-07-25 21:56:21 +08:00
|
|
|
|
fi
|
2024-11-18 23:12:52 +08:00
|
|
|
|
mkdir -p "$script_path"
|
2024-07-25 21:56:21 +08:00
|
|
|
|
|
2025-05-19 22:41:57 +08:00
|
|
|
|
# 定时任务配置说明
|
2024-07-26 18:45:04 +08:00
|
|
|
|
echo "执行日期"
|
|
|
|
|
echo "星号(*):表示匹配任意值"
|
|
|
|
|
echo "逗号(,):用于分隔多个值"
|
|
|
|
|
echo "斜线(/):用于指定间隔值"
|
|
|
|
|
echo "连字符(-):用于指定范围"
|
|
|
|
|
|
2025-05-19 22:41:57 +08:00
|
|
|
|
# 配置cron表达式
|
2024-11-18 23:12:52 +08:00
|
|
|
|
declare cron_expression
|
|
|
|
|
declare -a cron_fields=("分钟 0–59" "小时 0–23" "天数 1–31" "月份 1–12" "星期 0–7" )
|
|
|
|
|
for field in "${cron_fields[@]}";do
|
|
|
|
|
read -p "${field},默认为 * :" tmp_time
|
2024-07-26 18:45:04 +08:00
|
|
|
|
if [[ $tmp_time =~ ^[0-9]+$ || $tmp_time == '*' ]];then
|
2024-11-18 23:12:52 +08:00
|
|
|
|
cron_expression+="${tmp_time} "
|
2024-07-26 18:45:04 +08:00
|
|
|
|
elif [[ -z ${tmp_time} ]];then
|
2024-11-18 23:12:52 +08:00
|
|
|
|
cron_expression+='* '
|
2024-07-26 18:45:04 +08:00
|
|
|
|
else
|
|
|
|
|
echo "输入错误"
|
|
|
|
|
exit
|
|
|
|
|
fi
|
|
|
|
|
done
|
2025-05-19 22:41:57 +08:00
|
|
|
|
|
|
|
|
|
# 验证cron表达式
|
2024-11-18 23:12:52 +08:00
|
|
|
|
if [[ "$cron_expression" == '* * * * * ' ]];then
|
|
|
|
|
read -p "该脚本会无时无刻执行,请重新输入"
|
2024-07-26 18:45:04 +08:00
|
|
|
|
exit
|
|
|
|
|
fi
|
|
|
|
|
|
2025-05-19 22:41:57 +08:00
|
|
|
|
# 检查脚本是否存在
|
|
|
|
|
if [[ -f "${script_path}/${selected_script}.sh" ]];then
|
2024-09-23 16:47:48 +08:00
|
|
|
|
echo "该路径文件已经存在"
|
2025-05-19 22:41:57 +08:00
|
|
|
|
read -p "是否覆盖?(y/n): " overwrite
|
|
|
|
|
if [[ ! $overwrite =~ [Yy] ]]; then
|
|
|
|
|
echo "已取消操作"
|
|
|
|
|
exit
|
|
|
|
|
fi
|
2024-09-23 16:47:48 +08:00
|
|
|
|
fi
|
|
|
|
|
|
2025-05-19 22:41:57 +08:00
|
|
|
|
# 执行原始脚本
|
|
|
|
|
bash "${local_path}/${selected_script}.sh" "$script_path"
|
|
|
|
|
|
|
|
|
|
# 设置脚本权限
|
|
|
|
|
chmod +x "${script_path}/${selected_script}.sh" && echo "脚本执行权限添加成功" || echo "脚本执行权限添加失败"
|
2024-07-25 21:56:21 +08:00
|
|
|
|
|
2025-05-19 22:41:57 +08:00
|
|
|
|
# 配置定时任务
|
|
|
|
|
declare cron_job="${cron_expression} ${script_path}/${selected_script}.sh"
|
|
|
|
|
(crontab -l 2>/dev/null | grep -v "${selected_script}.sh") | crontab -
|
2024-09-23 17:59:28 +08:00
|
|
|
|
(crontab -l 2>/dev/null; echo "$cron_job") | crontab -
|
2024-07-26 18:39:43 +08:00
|
|
|
|
|
2025-05-19 22:41:57 +08:00
|
|
|
|
# 重启cron服务
|
2024-09-26 19:46:58 +08:00
|
|
|
|
systemctl restart cron 2>> /dev/null && echo "自动任务配置成功" || echo "自动任务重启失败"
|
2024-07-26 18:39:43 +08:00
|
|
|
|
|
2024-07-25 21:56:21 +08:00
|
|
|
|
echo "配置完成"
|