一 背景
由于有很多同学包括我自己经常忘记打上下班卡,而一到月底或者月初会有非常多的同学操作补卡,给领导造成不小的审批压力(自夸一下哈:懂得为领导消除烦恼的员工都是好员工)。为了让领导减轻压力和尽量适时提醒大家和自己打卡,于是乎有了该打卡提醒脚本,然后为了让打卡提醒脚本不至于太单调,还在每次提醒中加了一些名言名句。
另外,如果你们公司用的不是钉钉,而是企业微信,也一样可以,只是需要把钉钉机器人换成企业微信机器人,请求url和body都需要调整一下,其他都不需要调整。
二 打卡脚本
我的脚本放置路径在/root/scripts/
下,可自行调整路径。
打卡脚本如下: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
dingding_token=【替换成你们的钉钉群机器人token】
# 名人名言 一行一句 根据实际情况调整路径
mingyan_file=/root/scripts/mingyan.txt
# 统计出行数
mingyan_num=`cat ${mingyan_file} | wc -l`
# 随机其中一行
mingyan_line=$(($RANDOM%$mingyan_num+1))
# 随机取出其中一行
mingyan_content=`sed -n ${mingyan_line}p ${mingyan_file}`
# 需要跳过的提醒日期 比如春节期间某些公司的放假时间可能有延后或推迟 根据实际情况去调整 根据实际情况调整路径
skipdate_file=/root/scripts/daka-skip.txt
skipdates=`cat ${skipdate_file}`
function alarm() {
value=$(date +%H)
if [ $value -lt 12 ]; then
msg="上班打卡提醒\n即将上班了,别忘记打卡哈[嘿嘿]"
else
msg="下班打卡提醒\n上班一天辛苦啦,记得打下班卡哈[嘿嘿]"
fi
msg="${msg}\n名言名句:\n${mingyan_content}"
curl "https://oapi.dingtalk.com/robot/send?access_token=${dingding_token}" -H 'Content-Type: application/json' -d "{\"msgtype\": \"text\",\"text\": {\"content\": \"${msg}\"}}" >> /root/scripts/daka.log
echo -e "\n----- $(date '+%Y-%m-%d %H:%M:%S') 已发${msg}打卡提醒------" >> /root/scripts/daka.log
}
# 判断是否工作日 0是工作日
is_work=$(curl http://tool.bitefu.net/jiari/?d=$(date '+%Y%m%d'))
# 非工作日 退出
if [ $is_work -gt 0 ]; then
echo "----- $(date '+%Y-%m-%d %H:%M:%S') 今天不需要上班------" >> /root/scripts/daka.log
exit 0
fi
curr_date=$(date '+%Y%m%d')
for i in ${skipdates} #注意:pwd当前目录下的文件
do
if [ $i -eq $curr_date ]; then
echo "----- $(date '+%Y-%m-%d %H:%M:%S') 今天不需要上班(skip)------" >> /root/scripts/daka.log
exit 0
fi
done
alarm
其中依赖到的名言名句 /root/scripts/mingyan.txt
示例如下,大家可以网上去找一些名言名句补充:1
2
3
4
5
6
7
8
9# cat /root/scripts/mingyan.txt
玉不啄,不成器;人不学,不知道。——《礼记》
己所不欲,勿施于人。——孔子
在人生道路上谦让三分,就能天宽地阔。——卡内基
志坚者,功名之柱也。登山不以艰险而止,则必臻乎峻岭。
我这个人走得很慢,但是我从不后退。——亚伯拉罕·林肯
所有的胜利,与征服自己的胜利比起来,都是微不足道。
只有把抱怨环境的情绪,化为上进的力量,才是成功的保证。——罗曼·罗兰
...
打卡提醒需要跳过的日期文件 /root/scripts/daka-skip.txt
如下:1
2
3# cat daka-skip.txt
20210210
20210218
三 定时任务
写好了脚本,接下里就是定时任务了,我们直接使用centos7系统自带的crontab即可,配置如下:
1 | # cat /etc/crontab |
根据自己公司的实际上班时间和下班时间,可以随意调整提醒的时间和次数。
修改完crontab后,需要重启一下crond服务1
systemctl restart crond
四 钉钉提醒效果
上班打卡提醒消息如下1
2
3
4上班打卡提醒
即将上班了,别忘记打卡哈[嘿嘿]
名言名句:
只要有信心,人永远不会挫败。
下班打卡提醒消息如下1
2
3
4下班打卡提醒
上班一天辛苦啦,记得打下班卡哈[嘿嘿]
名言名句:
深窥自己的心,而后发觉一切的奇迹在你自己。——培根