美文网首页Shell
【shell】用shell脚本,实现提醒小组成员值班

【shell】用shell脚本,实现提醒小组成员值班

作者: Bogon | 来源:发表于2023-09-16 10:39 被阅读0次

    需求拆分

    • 有一个值班人员的数组,可以随时进行调整里面的人员名单
    • 一个人的值班周期为每周1到每周6(别问为什么是周6,因为周日在系统里都算下一周了,date +%U)
    • 每天上班时间提醒一次,发送消息到钉钉
    • 遍历数组,人员轮流值班

    实现代码

    #!/bin/bash
    
    # 值班成员数组,可以根据需要调整
    on_duty_members=("X" "X" "X" )
    
    # 获取当前周数
    current_week=$(date +%U)
    
    # 计算值班成员的索引
    on_duty_index=$(($current_week % ${#on_duty_members[@]}))
    
    # 获取值班成员
    on_duty_member=${on_duty_members[$on_duty_index]}
    
    # 发送消息给值班成员
    #echo "本周值班成员:$on_duty_member, 请注意值班安排。"
    
    #获取当前日期
    curday=$(date +%F)
    curl 'https://oapi.dingtalk.com/robot/send?access_token=ecd19ab97XXXXX87dd20b54772d9ff7' \
     -H 'Content-Type: application/json' \
     -d '{
        "text": {
            "content":" '"${curday}"'  值班情况如下:
    【项目组】值班人:@'"${on_duty_member}"' 请注意值班安排。
     记录好线上问题,无需提Bug,但需要汇总!"
        },
        "msgtype":"text"
    }
    '
    
    

    这个脚本是一个 Bash 脚本,用于根据当前日期和周数来确定值班成员,并通过钉钉机器人发送消息给对应的值班成员。

    以下是脚本的详细解析:

    1. on_duty_members=("X" "X" "X" ):定义一个数组 on_duty_members,存储值班成员的姓名。你可以根据需要调整成员的数量和姓名。

    2. current_week=$(date +%U):使用 date 命令获取当前周数,并将结果保存在变量 current_week 中。

    3. on_duty_index=$(($current_week % ${#on_duty_members[@]})):计算值班成员数组的索引。通过取余运算符 % 将当前周数与值班成员数量取余,得到的结果就是值班成员数组的索引。

    4. on_duty_member=${on_duty_members[$on_duty_index]}:根据计算得到的索引,从值班成员数组中获取对应的值班成员姓名,并将其保存在变量 on_duty_member 中。

    5. curday=$(date +%F):使用 date 命令获取当前日期,并将结果保存在变量 curday 中。

    6. curl 'https://oapi.dingtalk.com/robot/send?access_token=ecd19ab97XXXXX87dd20b54772d9ff7' \:使用 curl 命令发送 HTTP POST 请求给钉钉机器人。其中 access_token 是你钉钉机器人的访问令牌,需要替换成你自己的。

    7. -H 'Content-Type: application/json' \:设置请求头的 Content-Type 为 application/json。

    8. -d '{ "text": { "content":" '"${curday}"' 值班情况如下:\n【项目组】值班人:@'"${on_duty_member}"' 请注意值班安排。 记录好线上问题,无需提Bug,但需要汇总!" }, "msgtype":"text" }':设置请求体,包含要发送的消息内容。消息内容中使用了变量 curdayon_duty_member,分别代表当前日期和值班成员姓名。

    最后,脚本通过 } 结束 curl 命令的调用,完成消息发送。

    添加定时任务

    配置好定时任务就行,配置每天上午10点10分发送消息。
    输入crontab -e ,新增定时任务:10 10 * * * bash "你的脚本完全路径"。

    相关文章

      网友评论

        本文标题:【shell】用shell脚本,实现提醒小组成员值班

        本文链接:https://www.haomeiwen.com/subject/wbnbvdtx.html