首页 > 其他分享 >钉钉机器人远程重启系统服务

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

时间:2024-06-05 18:12:16浏览次数:21  
标签:__ text 重启 机器人 webhook send message 远程

from flask import Flask, request
import subprocess

app = 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是钉钉机器人的hook
    message = '''
    {
        "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.stdout

if __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中如果有设置。

 

 

 

 

 

标签:__,text,重启,机器人,webhook,send,message,远程
From: https://www.cnblogs.com/lyt263/p/18232686

相关文章

  • Linux 部署 MinIO(远程服务器)
      1.下载安装进入Linux内#我习惯放在local下cd/usr/local/#新建目录mkdirminio#进入目录cdminio下载路径:#下载地址wgethttps://dl.min.io/server/minio/release/linux-amd64/minio授权:#授权chmod+xminio 2.自定义配置自定义账号与登......
  • Microsoft Remote Desktop for Mac(微软远程连接软件)v10.9.7直装版
    MicrosoftRemoteDesktop是微软开发的远程连接工具,支持Windows、macOS、iOS和Android,允许用户通过互联网远程访问其他计算机的桌面和应用程序,实现跨设备文件共享。同时,它提供网络层身份验证、数据加密和多重身份验证等安全功能,确保用户隐私和数据安全。MicrosoftRemoteDesk......
  • 【杂谈】AIGC之ChatGPT-与智能对话机器人的奇妙对话之旅
    与智能对话机器人的奇妙对话之旅引言在数字时代的浪潮中,ChatGPT如同一位智慧的旅伴,它不仅能够与我们畅谈古今,还能解答我们的疑惑,成为我们探索知识海洋的得力助手。今天,就让我们走进ChatGPT的世界,一探这位智能对话机器人的奥秘。起源:ChatGPT的诞生ChatGPT的诞生,可以追溯......
  • 六足机器人运动学
    文章目录前言六足机器人运动学分析1.正运动学2.逆运动学3.MATLAB验证正逆解代码前言六足机器人运动学六足机器人运动学分析六足机器人运动学分析就是将空间直角坐标系建立再机器人腿部的关节上将腿部各关节之间的间距,关节的夹角进行关系转换,求解其位置......
  • 第三届机器人、人工智能与信息工程国际学术会议(RAIIE 2024)
    【ACM独立出版/Fellow大咖云集】2024年第二届机器人、人工智能与信息工程国际学术会议(RAIIE2024)20243rdInternationalSymposiumonRobotics,ArtificialIntelligenceandInformationEngineering大会官网:https://ais.cn/u/juURra大会时间:2024年07月05-07日大会地点:新......
  • 【SIP&MRCP】reeswitch如何配置远程SIP网关和路由,没有认证
    当在FreeSWITCH中配置远程SIP网关且不需要认证时(非认证方式,即IP对接或SIP中继对接),可以按照以下步骤进行配置:1.配置远程SIP网关步骤一:确定SIP网关信息SIP服务器地址:IP或域名。SIP端口(如果需要):默认通常是5060,但可能有所不同。步骤二:创建SIP网关配置文件在FreeSWITCH的conf/......
  • 自动移动机器人(AMR)技术详解
    自动移动机器人(AMR)技术是一种复杂的集成系统,它结合了多种技术来实现自主导航、感知环境和执行任务。以下是AMR技术的一些关键组件和功能:导航系统:定位技术:AMR通常使用GPS(在户外)和室内定位技术(如Wi-Fi、蓝牙、UWB或激光雷达SLAM)来确定其位置。路径规划:基于A*算法、Dijkstra......
  • 配置Mysql允许远程连接
    目录1.开通其他主机使用root登录的权限2.在安装mysql的本机上添加防火墙允许规则,允许33063.补充1.开通其他主机使用root登录的权限在搜索里搜索msyql进入命令行,输入密码;usermysql showtables;显示所有数据库,我们可以看到有一个名为user的表。selectHost,Use......
  • 【JPCS出版|EI检索|最后一轮征稿】2024年机器人、自动化和控制工程国际会议(ICRACE 2024)
    2024年机器人、自动化和控制工程国际会议(ICRACE2024)会议官网:www.ic-race.org会议时间:2024年07月12-14日会议地点:中国-南京最终截稿时间:2024年6月28日报名截止时间:2024年7月05日征稿中(详情可与会务组老师联系)审稿回复时间:投稿后1周内提交检索类型:EICompendex,Scopus......
  • tg机器人怎么做简单:快速上手tg机器人制作的简易指南
    对于初学者来说,制作一个TG机器人可能会显得有些复杂。但是,只要掌握了一些基本的步骤和技巧,你就可以轻松地上手并制作出属于自己的TG机器人。本文将为你提供一个简易的指南。一、明确需求在开始制作机器人之前,你需要明确你的需求。专属定制前往TG&broang,&改成@即可打造你的完......