Shell

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

2023-09-16  本文已影响0人  Bogon

需求拆分

实现代码

#!/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 "你的脚本完全路径"。

上一篇 下一篇

猜你喜欢

热点阅读