06-定时滚动数组通知脚本

定时滚动数组内容并发送通知

背景

一家小公司每周需要内部2人一组打扫卫生。总共5组10个人。

  • 地面:每1周1组2个人打扫。

  • 厕所:每2周1组2个人打扫。

两者同时进行,想到可以利用 linux 的 crontab 系统级的定时任务去触发,发送企业微信通知下消息,来告知本周打扫卫生的人。

具体实现如下(1个文本文件, 2个脚本, 1个定时配置):

/root/.notice/names.txt

1
2
3
4
5
熊大,熊二
张三,李四
王五,赵六
孙七,周八
吴九,郑十

脚本

/root/.notice/floor_sweep.sh

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
#!/bin/bash

file="/root/.notice/names.txt"
IFS=$'\n' read -d '' -r -a lines < "$file"

index=`cat /root/.notice/last_floor_index`
pair=${lines[$index]}
first=$(echo $pair | cut -d',' -f1)
second=$(echo $pair | cut -d',' -f2)
echo "当前人员:$first, $second"

((index=(index + 1) % ${#lines[@]}))
echo $index > /root/.notice/last_floor_index

#部门群
CURL_URL='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=yyy'
#测试一下
#CURL_URL='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx'

#推送群机器人消息
push_webhook_msg() {
currentDate=`date +%Y-%m-%d`

CURL_DATA="{\"msgtype\": \"text\", \"text\": {\"content\": \"本周 $currentDate 打扫【地面】(每1周):$first, $second\", \"mentioned_list\":[\"@all\"]}}"
echo "$CURL_DATA"

CURL_CMD="curl \"$CURL_URL\" -H \"Content-Type: application/json\" -d '$CURL_DATA'"
#echo $CURL_CMD

CURL_RES=$(eval $CURL_CMD) # 使用eval执行curl命令
echo $CURL_RES
}

push_webhook_msg

exit 0

/root/.notice/toilet_sweep.sh

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
#!/bin/bash

#偶数周打扫了厕所, 即固定偶数周提醒
week_num=`date +%W`
((week_res=$week_num % 2))
echo week_res=$week_res
if [ $week_res != 0 ];then
echo exit
exit 0
fi


file="/root/.notice/names.txt"
IFS=$'\n' read -d '' -r -a lines < "$file"

index=`cat /root/.notice/last_toilet_index`
pair=${lines[$index]}
first=$(echo $pair | cut -d',' -f1)
second=$(echo $pair | cut -d',' -f2)
echo "当前人员:$first, $second"

((index=(index + 1) % ${#lines[@]}))
echo $index > /root/.notice/last_toilet_index

#部门群
CURL_URL='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=yyy'
#测试一下
#CURL_URL='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx'

#推送群机器人消息
push_webhook_msg() {
currentDate=`date +%Y-%m-%d`

CURL_DATA="{\"msgtype\": \"text\", \"text\": {\"content\": \"本周 $currentDate 打扫【厕所】(每2周):$first, $second\", \"mentioned_list\":[\"@all\"]}}"
echo "$CURL_DATA"

CURL_CMD="curl \"$CURL_URL\" -H \"Content-Type: application/json\" -d '$CURL_DATA'"
#echo $CURL_CMD

CURL_RES=$(eval $CURL_CMD) # 使用eval执行curl命令
echo $CURL_RES
}

push_webhook_msg

exit 0

crontab配置

1
2
3
$ crontab -e
30 11 * * 6 /root/.notice/floor_sweep.sh #每周6上午11:30点执行一次脚本
30 11 * * 6 /root/.notice/toilet_sweep.sh #每周6上午11:30点执行一次脚本

每周六都发送通知,但是偶数周才需要通知厕所任务,所以奇数周厕所任务跳过不发送。

发送效果:

image-20240921112125797


06-定时滚动数组通知脚本
https://janycode.github.io/2024/02/12/02_编程语言/03_Shell/06-定时滚动数组通知脚本/
作者
Jerry(姜源)
发布于
2024年2月12日
许可协议