【定时器】企业微信群定时发送消息简单实现
😄作者简介:
小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊
座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍
🔥背景
露胳膊露的季节要到了,几个小伙伴开始约着一块锻炼,因为每天还要忙工作,我们就合计着周一、三、五 中午锻炼,周二、四晚上锻炼,以防忘记,所以就想着搞个定时提醒。基于此,我就搞了个定时器每天发送提醒消息到企业微信。主要使用的是Launchctl工具定时执行脚本。
🔥Launchctl概述
Launchctl 是 Mac 和 iOS 系统中的一个工具,用于管理应用程序的启动和停止。通过系统调用和命令行参数来实现。使用Launchctl充当定时器最合适不过了。
Launchctl常用命令可以在控制台直接输入launchctl回车即可看到相关参数,但是常用的命令有
launchctl list
launchctl load ~/Library/LaunchAgents/local.demo.plist
launchctl unload ~/Library/LaunchAgents/local.demo.plist
launchctl stop ~/Library/LaunchAgents/local.demo.plist
//如果任务被修改了,必须先unload,然后重新执行load
🔥plist文件是什么
.plist 文本文件是macOS应用程序使用的设置文件,也成为属性文件,采用XML格式,MacOS中的启动项都会以.plist的文件形式存储在系统的Library目录中,常用于存储应用程序的设置、配置数据等。
🔥定时器实战
第一步:创建企业微信机器人
右击群—>管理聊天消息—>添加群机器人—>新创建一个机器人
第二步:获取webhook地址
点击新创建的机器人,会看到机器人的webhook地址
第三步:编写python脚本
主要逻辑是:周一、三、五发送中午锻炼,周二、四发送晚上锻炼,具体内容如下:
#! /usr/bin/python3
import types
import requests
import json
import datetime
# Webhook地址
webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=95c150-d7e3a5e01649"
#获取今天周几
today = datetime.datetime.now().weekday()+1
print(today)
# 构造要发送的消息
if today in[1,3,5]:#周一、三、五
text = {
#"content": "这是定时发送的群消息,发送时间:%s" % datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
"content": "呼叫各位将士,今天是周%s,别忘记中午锻炼哦" % today,
"mentioned_list": ["@all"]
}
elif today in [2,4]:#today in[2,4]:#周二、四
text = {
"content": "呼叫各位将士,今天是周%s,别忘记晚上锻炼哦" % today,
"mentioned_list": ["@all"]
}
data = {
"msgtype": "text",
"text": text
}
headers = {'Content-Type': 'application/json'}
# 发送消息
response = requests.post(url=webhook_url, headers=headers, data=json.dumps(data))
# 输出结果
print(response.text)
第四步:编写shell脚本
名为run.sh,具体内容如下,主要是执行上述python脚本
#!/bin/sh
# 记录一下开始时间
echo `date` >> /Users/呼啦圈/log &&
# 进入helloworld.py程序所在目录
cd /Users/呼啦圈 &&
# 执行python脚本(注意前面要指定python运行环境/usr/bin/python,根据自己的情况改变)
/usr/local/bin/python3.9 demo.py
# 运行完成
echo 'finish' >> /呼啦圈/log
第五步:编写.plist文件
在~/Library/LaunchAgents目录下创建一个local.demo.plist文件,输入要执行的脚本以及定时发送时间,可以参考如下内容
(~/Library/LaunchAgents: 用户自定义的用户启动项)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- Label唯一的标识 -->
<key>Label</key>
<string>local.demo.plist</string>
<!-- 指定要运行的脚本 -->
<key>ProgramArguments</key>
<array>
<string>/Users/呼啦圈/run.sh</string>
</array>
<!-- 指定要运行的时间 -->
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>10</integer>
<key>Hour</key>
<integer>10</integer>
</dict>
<!-- 标准输出文件 -->
<key>StandardOutPath</key>
<string>/Users/呼啦圈/run.log</string>
<!-- 标准错误输出文件,错误日志 -->
<key>StandardErrorPath</key>
<string>/Users/呼啦圈/run.err</string>
</dict>
第六步:执行命令
launchctl load ~/Library/LaunchAgents/local.demo.plist
如果执行报错,则执行unload,再执行load
#卸载
launchctl unload ~/Library/LaunchAgents/local.demo.plist
当到预定的时间点后,企业微信就会受到预设的消息,例如
以实战为线索,逐步深入Jenkins各个环节,由入门到精通,秒级解决工作问题。
更多推荐
所有评论(0)