最近在服务器上运行任务,任务完成后希望在手机上收到通知。
实现方法:用ntfy监控进程的运行情况,然后将信息传送到pushplus的推送接口,在微信上便会收到通知。
在pushplus的官网(pushplus(推送加) - 消息推送平台)注册账号获取推送接口的token。注册过程会提示关注微信公众号并激活消息推送功能,按说明操作。在网站的调用方式栏注明HTTP GET方式的请求地址是
http://www.pushplus.plus/send?token=XXX&title=XXX&content=XXX&template=html
其中XXX就是在ntfy中要替换的信息了,这里先保留。至此配置好pushplus。
ntfy项目在Github上的地址dschep/ntfy: ️ A utility for sending notifications, on demand and when commands finish. (github.com)https://github.com/dschep/ntfy
这里按照说明的方式配置,此处以普通用户安装而非管理员。
1.安装
pip3 install --user ntfy
2.配置后端
ntfy本身支持诸如Pushbullet、Simplepush等方式,但不支持pushplus,在它的后端文件夹下手动添加pushplus的接口,按如下方式
[coco@node1 ~]$ touch ~/.local/lib/python3.6/site-packages/ntfy/backends/push_plus.py
[coco@node1 ~]$ cat ~/.local/lib/python3.6/site-packages/ntfy/backends/push_plus.py
import requests
def notify(title, message, user_token, **kwargs):
"""
kwargs contains retcode if using ntfy done or ntfy shell-integration
and all options in your backend's section of the config
"""
requests.get("http://www.pushplus.plus/send?token=%s&title=%s&content=%s&template=html" % (user_token, title, message))
把请求地址中的XXX更换为格式化语句。
3.配置token
将pushplus的token写入配置文件
[coco@node1 ~]$ touch ~/.config/ntfy/ntfy.yml
[coco@node1 ~]$ cat ~/.config/ntfy/ntfy.yml
---
backends:
- push_plus
push_plus:
user_token: XXXXXXXXXXXXXXXXXXXX
在user_token处填写你的token
4.测试
在终端输入
[coco@node1 ~]$ ntfy send "test"
手机上收到提示。
ntfy提供进程完成提醒功能,因此在获取到进程的PID后将其交给ntfy即可在进程结束时收到通知。
以gedit为例,运行完gedit后微信收到提示。
[coco@node1 ~]$ gedit &
[coco@node1 ~]$ ps -ux | grep gedit
user1 28877 3.0 0.0 652028 36356 pts/4 Sl+ 21:21 0:00 gedit
user1 28949 0.0 0.0 41528 2048 pts/5 S+ 21:22 0:00 grep --color=auto gedit
[coco@node1 ~]$ ntfy done --pid 28877 &