章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • python

  • shell

    • 进程pid判断脚本
    • 日志切割脚本
    • 设置跳板机脚本
    • 编写启动、停止、重启的脚本
    • mysql数据库备份的三种方式
    • jenkins编译服务脚本
    • app编译脚本
    • 常用shell脚本
    • 字符串的截取拼接
    • shell基础
    • centos7主机安全检测脚本和初始化脚本
    • 应用服务重启脚本
    • shell重启python程序脚本
    • rancher的证书制作脚本
    • shell常用脚本集合
    • mysql常用的脚本集合
    • shell批量部署安装包并启动
    • 批量添加定时任务
    • mysql备份企业示例
    • shell脚本创建出色用户体验的6种技巧
    • 多系统一键部署zabbix6脚本(已验证)
    • 批量拿取多台服务器的日志文件
    • shell脚本模块集合
  • go

  • 编程
  • shell
章工运维
2024-10-18

批量添加定时任务

脚本如下

#!/bin/bash

# 检查参数数量
if [ "$#" -lt 2 ]; then
    echo "Usage: $0 <hosts_file> <cron_job_file>"
    echo "cron_job_file format: <cron_schedule> <command>"
    exit 1
fi

hosts_file="$1"
cron_job_file="$2"

# 检查文件是否存在
if [ ! -f "$hosts_file" ]; then
    echo "Error: Hosts file does not exist."
    exit 1
fi

if [ ! -f "$cron_job_file" ]; then
    echo "Error: Cron job file does not exist."
    exit 1
fi

# 读取主机文件并添加定时任务
while IFS= read -r host
do
    echo "Adding cron jobs to $host..."
    
    # 读取cron任务并通过heredoc传递给远程主机
    ssh "$host" bash << EOF
        # 创建临时文件
        temp_file=\$(mktemp)

        # 导出当前的 crontab 内容到临时文件
        crontab -l > "\$temp_file" 2>/dev/null

        # 读取并添加新的定时任务
        while IFS= read -r job; do
            if grep -Fq "\$job" "\$temp_file"; then
                echo "The cron job '\$job' already exists on $host. Skipping."
            else
                echo "\$job" >> "\$temp_file"
                echo "Added new cron job: \$job"
            fi
        done << 'CRON_JOBS'
$(cat "$cron_job_file")
CRON_JOBS

        # 更新 crontab
        crontab "\$temp_file"

        # 删除临时文件
        rm "\$temp_file"

        echo "Cron jobs updated successfully on $host."
EOF

    if [ $? -eq 0 ]; then
        echo "Successfully added cron jobs to $host"
    else
        echo "Failed to add cron jobs to $host"
    fi
    echo "-----------------------------------"
done < "$hosts_file"

echo "Batch cron job addition completed."
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
微信 支付宝
上次更新: 2024/10/18, 18:39:32

← shell批量部署安装包并启动 mysql备份企业示例→

最近更新
01
shell脚本模块集合
05-13
02
生活小技巧(认知版)
04-29
03
生活小技巧(防骗版)
04-29
更多文章>
Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式