python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务

这篇具有很好参考价值的文章主要介绍了python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 config.yaml配置文件内容

功能就是userpass下的用户名和密码做增删改查,并重启hy2服务

auth:
  type: userpass
  userpass:
    csdn: csdn

listen: :443
masquerade:
  proxy:
    rewriteHost: true
    url: https://www.bing.com/
  type: proxy
tls:
  cert: /root/hyst*****马赛克******eria2/csdn.crt
  key: /root/hyst*****马赛克******eria2/csdn.key

直接上代码

from flask import Flask, request, jsonify
import yaml
import subprocess
import os

app = Flask(__name__)
CONFIG_FILE = '/root/hyst*******马赛克******eria2/config.yaml'
API_KEY = '123456789'

def read_config():
    with open(CONFIG_FILE, 'r') as file:
        return yaml.safe_load(file)

def write_config(config):
    with open(CONFIG_FILE, 'w') as file:
        yaml.safe_dump(config, file)

def restart_service(service_name):
    try:
        subprocess.run(['sudo', 'systemctl', 'restart', service_name], check=True)
        return True
    except subprocess.CalledProcessError:
        return False

def check_service_status(service_name):
    try:
        result = subprocess.run(['sudo', 'systemctl', 'is-active', service_name], check=True, stdout=subprocess.PIPE)
        if result.stdout.decode('utf-8').strip() == 'active':
            return True
        else:
            return False
    except subprocess.CalledProcessError:
        return False

@app.route('/api', methods=['POST'])
def manage_user():
    # 验证API Key
    api_key = request.headers.get('Authorization')
    if api_key != API_KEY:
        return jsonify({'error': 'Unauthorized'}), 401

    # 解析请求数据
    data = request.json
    if not data or 'username' not in data or 'action' not in data:
        return jsonify({'error': 'Bad Request'}), 400
    
    username = data['username']
    action = data['action'].lower()

    # 读取配置文件
    config = read_config()
    userpass = config.get('auth', {}).get('userpass', {})

    service_name = 'hyst*******马赛克******eria2' # 服务名称
    need_restart = False

    if action == 'add':
        if 'password' not in data:
            return jsonify({'error': 'Missing password for add action'}), 400
        password = data['password']
        userpass[username] = password
        need_restart = True
    elif action == 'delete':
        if username in userpass:
            userpass.pop(username, None)
            need_restart = True
        else:
            return jsonify({'error': 'User not found'}), 404
    elif action == 'query':
        password = userpass.get(username)
        if password is not None:
            return jsonify({username: password})
        else:
            return jsonify({'error': 'User not found'}), 404
    else:
        return jsonify({'error': 'Invalid action'}), 400

    # 对于非查询动作,更新配置文件并重启服务
    if need_restart:
        config['auth']['userpass'] = userpass
        write_config(config)
        if restart_service(service_name):
            if check_service_status(service_name):
                return jsonify({'success': True, 'message': 'Service restarted and running'})
            else:
                return jsonify({'error': 'Service restarted but not running'}), 500
        else:
            return jsonify({'error': 'Failed to restart service'}), 500

    return jsonify({'success': True})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

add功能,带验证

python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务,flask,python,后端,api

python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务,flask,python,后端,api

del功能

 python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务,flask,python,后端,api

查询功能 python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务,flask,python,后端,api

代码完成:chatgpt4 文章来源地址https://www.toymoban.com/news/detail-836743.html

到了这里,关于python3 flask 实现对config.yaml文件的内容的增删改查,并重启服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python3处理docx并flask显示

    最近有需求处理docx文件,并讲内容显示到页面,对world进行在线的阅读,这样我这里就使用flask+Document对docx文件进行处理并显示,下面直接上代码: 首先下载Document的库文件,先直接安装最新版的python-docx,如果不行则换成1.1.0版本: 处理docx代码如下: 上述代码会对docx文件

    2024年02月03日
    浏览(24)
  • Python3 flask-socketio 整合vue

    前端追加了vue-socket.io的依赖 更新package.json及package-lock.json后,需要补充库 服务端需要安装的python包 suse python 3.6.12 windows python 3.8.10 https://pypi.org/ 如有网环境,可以采用以下安装方式: 先在有网环境下,PyCharm工具里面下载,如下图: 然后在无网环境下直接使用现成的即可:

    2024年02月08日
    浏览(32)
  • python3 Flask jwt 简易token认证实例

        chatgpt写的代码

    2024年02月22日
    浏览(38)
  • 微信小程序编译每次都出现[ project.config.json 文件内容错误] project.config.json: libVersion 字段需为 string

    在 manifest.json中加入以下代码 具体配置可以参考小程序文档  根本原因是当前用的开发工具版本 非稳定版 。 ​​​​​​ 使用 开发工具的 稳定版本,不会触发此问题。  微信开发者工具——检查更新。千万不要手贱打钩,会更新到预发布版本,因为他最新。   附:开发工

    2024年02月04日
    浏览(35)
  • python3 简易 http server:实现本地与远程服务器传大文件

    在个人目录下创建新文件 httpserver.py : 文件内容为python3代码: 在需要暴露的目录下启动http服务,如 /data/codes/ 随后在个人电脑访问 http://ip:8888 即可浏览文件、上传文件:

    2024年02月08日
    浏览(42)
  • python3 爬虫相关学习8:python 的常见报错内容 汇总收集

    目录 1 低级错误(比如拼写错误等)  1.1 NameError:  1.2 属性错误 AttributeError:  属性拼写错误 2  应用错误(类型应用,属性使用的错误) 2.1 类型错误 TypeError:  如字符串连接错误 2.2  属性应用错误  AttributeError 3 模块相关错误 3.1 找不到对应模块 ModuleNotFoundError: 3.2 相关模

    2024年02月09日
    浏览(36)
  • 【Uni-App】微信小程序编译每次都出现[ project.config.json 文件内容错误] project.config.json: libVersion 字段需为 string

    当前用的开发工具版本不是 稳定版 根据微信小程序文档内容进行配置。 值 说明 latest 最新的非灰度中的基础库 trial 最新的基础库 widelyUsed 使用比例最高的基础库 在 manifest.json中加入 重启项目即可 根据自己需要,关闭 微信开发者工具 的 自动更新最新版本 功能 通过点击菜

    2024年02月21日
    浏览(34)
  • python flask创建服务器实现文件的上传下载,已获千赞

    } 二、后端代码(python) import os from string import Template from flask import Flask, send_file,request,jsonify from flask_cors import CORS import time app = Flask( name ) absolute = os.path.dirname( file ) CORS(app) app.debug = True FOLDER = os.path.join(absolute, ‘save_file’) HOST = “localhost” PORT = 8080 UPLOAD = ‘upload’ app.config

    2024年04月22日
    浏览(29)
  • python3 爬虫相关学习8:python 的常见报错内容汇总(持续收集ing)

    目录 1 低级错误(比如拼写错误等)  1.1 NameError:  1.2 属性错误 AttributeError:  属性拼写错误 2  应用错误(类型应用,属性使用的错误) 2.1 类型错误 TypeError:  如字符串连接错误 2.2  属性应用错误  AttributeError 3 模块相关错误 3.1 找不到对应模块 ModuleNotFoundError: 3.2 相关模

    2024年02月04日
    浏览(35)
  • 【SA8295P 源码分析】14 - Passthrough配置文件 /mnt/vm/images/linux-la.config 内容分析

    【源码分析】 因为一些原因,本文需要移除, 对于已经购买的兄弟,不用担心,不是跑路, 我会继续持续提供技术支持, 有什么模块想学习的,或者有什么问题有疑问的, 请私聊我,我们 +VX 沟通技术问题,一起学习,一起进步 接下来,我一一私聊已经购买的兄弟添加V

    2024年02月12日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包