钉钉机器人远程重启系统服务

news/2025/3/17 7:14:07/文章来源:https://www.cnblogs.com/lyt263/p/18232686
from flask import Flask, request
import subprocessapp = Flask(__name__)@app.route('/send_message', methods=['GET'])
def send_message():webhook_url = 'https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN'    # YOUR_TOKEN是钉钉机器人的hookmessage = '''{"msgtype": "actionCard","actionCard": {"title": "重启Odoo服务","text": "点击下方按钮以重启Odoo服务。","btnOrientation": "0","singleTitle": "重启Odoo","singleURL": "http://your-server-ip:5000/webhook"  }}'''curl_command = f"curl '{webhook_url}' -H 'Content-Type: application/json' -d '{message}'"result = subprocess.run(curl_command, shell=True, capture_output=True, text=True)return result.stdoutif __name__ == '__main__':app.run(host='0.0.0.0', port=5001)

上面这段代码将发送一个消息卡片到钉钉群,用户点击卡片中的按钮后,将触发监听服务。

先安装这个库: pip install flask

上面的文件名为:send_message.py

这段代码将监听来自钉钉的消息,并在接收到特定消息时,重启Odoo服务。

# 导入必要的库
from flask import Flask, request, jsonify
import subprocess# 创建Flask应用实例
app = Flask(__name__)# 定义路由,处理钉钉机器人的消息
@app.route('/webhook', methods=['POST'])
def webhook():# 获取请求中的JSON数据data = request.json# 检查数据是否包含特定文本内容if 'text' in data and 'content' in data['text']:content = data['text']['content']# 如果内容包含"重启odoo",则执行重启命令if '重启odoo' in content:try:# 执行重启Odoo服务的命令subprocess.run(['sudo', 'systemctl', 'restart', 'odoo12.service'], check=True)return jsonify({"msgtype": "text", "text": {"content": "Odoo服务已重启"}})except subprocess.CalledProcessError:return jsonify({"msgtype": "text", "text": {"content": "重启Odoo服务失败"}})return jsonify({"msgtype": "text", "text": {"content": "无效的命令"}})# 运行Flask应用
if __name__ == '__main__':app.run(host='0.0.0.0', port=5000)

 

  这个文件名为: webhook_listener.py
 下面为上面的脚本来封装成服务
通过systemd来管理和运行您的服务,确保它们在后台运行并在系统启动时自动启动。

创建systemd服务文件

为监听服务创建/etc/systemd/system/webhook_listener.service

 

[Unit]
Description=Gunicorn instance to serve webhook_listener
After=network.target[Service]
User=your_user
Group=www-data
WorkingDirectory=/path/to/your/application
ExecStart=/usr/local/bin/gunicorn --workers 3 --bind 0.0.0.0:5000 webhook_listener:app[Install]
WantedBy=multi-user.target
为Web接口服务创建/etc/systemd/system/send_message.service
[Unit]
Description=Gunicorn instance to serve send_message
After=network.target[Service]
User=your_user                    # 这个是系统的用户 比如:root  odoo  user 等等
Group=www-data
WorkingDirectory=/path/to/your/application     # 这个是文件所在的目录
ExecStart=/usr/local/bin/gunicorn --workers 3 --bind 0.0.0.0:5001 send_message:app[Install]
WantedBy=multi-user.target

 

启动并启用服务:

1、启动服务

sudo systemctl start webhook_listener
sudo systemctl start send_message

2、启用服务使其在系统启动时自动运行

sudo systemctl enable webhook_listener
sudo systemctl enable send_message

 

 

 这里的 203.0.113.1 是您远程服务器的公网IP地址。这个IP地址用于确保您的手机浏览器可以通过互联网访问您的服务器。

详细说明

1. 公网IP地址

  • 公网IP地址:这是您服务器的互联网可访问地址。任何连接到互联网的设备都可以使用这个IP地址来访问您的服务器。

2. 使用公网IP地址的原因

  • 可访问性:通过公网IP地址,您的手机浏览器可以访问服务器上的应用,从而触发发送消息卡片到钉钉群的操作。
  • 钉钉机器人回调:当用户在钉钉群中点击按钮时,钉钉机器人需要向您的服务器发送HTTP请求,这也需要使用公网IP地址,以确保钉钉能够访问您的服务器

 

 
sudo journalctl -f -u send_message.service   实时查看systemd服务的日志。这是默认的,如果send_message.service中如果有设置。

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/720446.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kalman fiter

卡尔曼滤波是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。 组成以及步骤 1.预测状态方程 目的:由系统状态变量k-1时刻的最优值和系统输入计算出k时刻的…

计算机英文教材太难啃?Higress 和通义千问帮你!

本文将介绍基于 AI 大语言模型进行英文技术内容翻译,并基于又免费又好用的翻译软件进行内容呈现,帮助大家轻松学习计算机英文原版教材。作者:张添翼(澄潭) 计算机相关英文教材的中译本质量堪忧,对于计算机专业的学生来说,应该深有体会。因为大部分教材的译者本人可能未必…

合工大毕业论文LaTeX模板使用指南

本文是在笔者为班级同学编写的指南的基础上修改而来的。 前言 LaTeX 是目前主流的计算机排版系统之一。目前社区维护了一份合工大毕业论文的 LaTeX 模板(以下简称“模板”):https://github.com/HFUTTUG/HFUT_Thesis 考虑到大部分同学对 Word 都谈不上精通,使用 LaTeX 排版毕…

巧用pause,一次性画出多个系统的阶跃响应

num=1;den1=[0.5 1 2 4 6 8];hold; for i=1:6 step(tf(num,[den1(i), 1])); pause(2);endlegend(num2str(den1(1)),num2str(den1(2)),num2str(den1(3)),num2str(den1(4)),num2str(den1(5)),num2str(den1(6)))结果: 人就像是被蒙着眼推磨的驴子,生活就像一…

流畅的python--第七章

把函数视为对象 在python中,函数是一等对象。编程语言研究人员把“一等对象”定义为满足以下条件的程序实体:在运行时创建; 能赋值给变量或数据结构中的元素; 能作为参数传给函数; 能作为函数的返回结果。 示例7-1 创建并测试一个函数,读取函数的__doc__属性,再检查函数…

OA-SLAM 笔记

4.1 基于 ORB-SLAM2 (tracking, local mapping, loop closure) , 增加了 针对于 objects 的模块。这些模块使用 the ellipse/ellipsoid modeling framework, 和 points 使用相同的策略, 即在 frames 上跟踪 objects, 以 3D 的方式估计,插入到地图,然后不断优化。object tr…

iLogtail 2.0 重大升级,端上支持 SPL

SLS 推出了 SPL(SLS Processing Language)语法,以此统一查询、端上处理、数据加工等的语法,保证了数据处理的灵活性。iLogtail 作为日志、时序数据采集器,在 2.0 版本中,全面支持了 SPL 。作者:太业 流式处理语言发展早期流式处理概念:20 世纪 70 年代,编程语言如 APL…

提供高达 58 Gbps 的收发器速率、AGFA023R31C2E1VB/AGFA023R31C2I1V/AGFA023R31C2I2VB现场可编程门阵列 (FPGA)

Agilex F 系列设备提供高达 58 Gbps 的收发器速率、支持多种精度的定点和浮点运算的高级数字信号处理 (DSP) 模块,以及高性能加密块。Agilex 7 FPGA产品系列包括业界最高性能的FPGA和SoC。英特尔 Agilex 7 FPGA和SoC由高性能的F系列、I系列和M系列FPGA组成,为要求最高的应用提…

JA4指纹了解

原文来自:https://mp.weixin.qq.com/s/Vo57J6l7WEt7L2bF_EAfbA https://xz.aliyun.com/t/14054?time__1311=mqmx9DBG0QD%3DNGNDQiiQGk0G8UAfWRi8rD&alichlgref=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DiCpL-H6nh6F3hHSqKNxdmugqoq3VxxR00WtgPIO6P2n4QKqCs9QZmOV5veT…

wsl安装教程

关于WLS的介绍1.什么是WSL?2 双系统的方法比较3 WSL1与WSL2比较 方法一: 传统手动安装1.1 windows系统版本查看及更新1.2 启用适用于Linux的Windwos子系统1.3 启用虚拟机功能1.4 重启电脑1.5 下载Linux内核更新包1.6 安装 Linux 分发版 方法二:命令符自动安装 (一行命令搞定…

Redis-4-持久化

Redis持久化 1.1 为什么 Redis是基于内存的,不保存的话,应用停止了后数据就不在了。 持久化的诉求,主要是解决以下问题: 防止数据丢失 Redis 是一个内存数据库,数据主要存储在内存中。如果没有持久化机制,一旦服务器宕机或重启,内存中的所有数据都会丢失。通过持久化,R…

Nacos配置

Nacos注册中心 目前开源的注册中心框架有很多,国内比较常见的有:Eureka:Netflix公司出品,目前被集成在SpringCloud当中,一般用于Java应用 Nacos:Alibaba公司出品,目前被集成在SpringCloudAlibaba中,一般用于Java应用 Consul:HashiCorp公司出品,目前集成在SpringCloud…