{alert type=”info”}
很难受,值班什么的,我有时候都记不住,所以打算写一个提醒值班的小脚本,再加上定时任务,定时发送到钉钉群里,提醒值班。话不多说开搞
{/alert}
先拆分需求
- 有一个值班人员的数组,可以随时进行调整里面的人员名单
- 一个人的值班周期为每周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=ecd19ab9787dd20b54772d9ff7' \
-H 'Content-Type: application/json' \
-d '{
"text": {
"content":" '"${curday}"' 值班情况如下:
【项目组】值班人: @'"${on_duty_member}"' 请注意值班安排
记录好线上问题,无需提Bug,但需要汇总"
},
"msgtype":"text"
}
'
然后测试发送,效果是这样的
最后我们配置好定时任务就行,我这里配置的是每天上午10点10分发送消息。
输入crontab -e ,新增定时任务: 10 10 * * *
bash “你的脚本完全路径”
然后重启定时任务就OK了。