当前位置: 首页 > news >正文

中文电子商务网站模板c2c十大平台

中文电子商务网站模板,c2c十大平台,淘宝店铺网站策划,wordpress $query1.可行的Reboot方法 1.1 修改/etc/sudoers 假定当前用户是mimi,增补这一行: mimi ALL(ALL) NOPASSWD: ALL 这是为了免输指令。 sudoers文件尽量在覆盖前把它的权限改回去: 原始权限 mimidebian-vm:~/test_app$ ls -l /tmp/sudoers -r--r-…

1.可行的Reboot方法

1.1 修改/etc/sudoers

假定当前用户是mimi,增补这一行:

mimi ALL=(ALL) NOPASSWD: ALL

这是为了免输指令。

sudoers文件尽量在覆盖前把它的权限改回去:

原始权限

mimi@debian-vm:~/test_app$ ls -l /tmp/sudoers 
-r--r----- 1 root root 755 5月  30 16:04 /tmp/sudoers 

赋权:

sudo chmod 777 /tmp/sudoers

权限还原:

sudo chmod 640 /tmp/sudoers

1.2 将用户加入sudo,root组:

sudo usermod -aG sudo mimi

sudo usermod -aG root mimi

1.3 python执行设备复位

subprocess.run(f'sudo reboot', shell=True)  #'sudo -E reboot'

2.进阶:执行一个外部脚本

此时需要考虑相对路径的问题,脚本里用得到.py所在目录,进而得到.py主目录的方法实现,也就是那个:project_path,

在示例代码中,该.py位于python工程的一个下级目录。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 获取当前脚本文件所在目录的父目录,并构建相对路径
import os
import sys
current_dir = os.path.dirname(os.path.abspath(__file__))
project_path = os.path.join(current_dir, '..')
sys.path.append(project_path)
sys.path.append(current_dir)
import json
import subprocess
import shutil#推荐的执行外部指令的方法
def CMD_DOWNLOAD_APP(client:mqtt, fn, request_params):# 执行系统命令downloadapp_sh = "./ext_ep/on_mqtt_message_download_app.sh"Invoke_Script(downloadapp_sh)def Invoke_Script(script_releated_path):sh_path = os.path.join(project_path, script_releated_path)if(os.path.exists(sh_path)):subprocess.run(f'sudo {sh_path}', shell=True, check=False)return Truereturn Falsedef Get_Invoke_Environment(script_releated_path):subprocess.run(f'sudo  printenv > feng.txt', shell=True)  #'sudo -E reboot'return True

 2.1 示例:一个可用的远程升级.sh

这里包含了如下操作:

  • 脚本相对路径处理
  • json配置读取
  • ftp自动登陆,下载过程免交互的处理
  • tar升级过程。
#!/bin/bash
echo "this modle should download app from fix ftpserver, then tar zxvf, then reboot"# 获取脚本所在的目录
script_dir=$(dirname "$0")# 切换至应用程序所在的目录
cd "$script_dir/.." || exit# JSON文件路径
json_file="cfg/device_private.json"
# 使用jq解析JSON文件
ftp_server=$(jq -r ".ota_ftp.ip" $json_file)
ftp_user=$(jq -r ".ota_ftp.user" $json_file)
ftp_pass=$(jq -r ".ota_ftp.pass" $json_file)
upload_dir=$(jq -r ".ota_ftp.upload_dir" $json_file)
# 本地保存路径
local_incoming_dir=$(jq -r ".ota_ftp.local_incoming_dir" $json_file)
app_root=$(jq -r ".ota_ftp.app_root" $json_file)
mkdir -p $local_incoming_dir
mkdir -p $app_root# 登录FTP服务器
ftp -i -n $ftp_server <<END_SCRIPT
quote USER $ftp_user
quote PASS $ftp_pass
lcd $local_incoming_dir
cd $upload_dir
bin
mget *.tar.gz 
quit
END_SCRIPT
echo "ftp download..."# 获取最新的.tar.gz文件名
latest_file_local=$(ls -t $local_incoming_dir/*.tar.gz | head -n 1)
tar -xzf "$latest_file_local" -C $app_root
echo "extected!"exit 0

注意那个jq,这是一个sh用的json文件读取工具,它支持全路径名:

“.ota_ftp.ip”相当于: json["ota_ftp"]["ip"]

sudo apt-get install jq 

3.未解决的问题

1.我无法把用户加入比如operator的某个支持交互式登陆的组,让这个用户仅仅具备开关机权限。2.应用程序的执行用户可能是mimi,但是subprocess的缺省用户是root...?然后这个确认用户root居然无法直接具备开关机权限。。。

附录A 调试方法

1.可以利用类似的语句刺探调用环境的信息

#subprocess.run(f'sudo -u {exec_user} printenv > reboot_log.txt', shell=True) 

http://www.yayakq.cn/news/232056/

相关文章:

  • 网站制作网站开发做百度移动端网站软件
  • p2p网站开发用什么平台邢台市桥西住房建设局网站
  • 网站备案期间做网页图片编辑器免费版
  • wordpress站点使用期限插件天助网的网站
  • 织梦网站后台模板东莞网站建设服务
  • 怎么做签到网站京东网站开发技术
  • 服装定制官网淄博seo费用
  • 福田网站建设龙岗网站建设龙岗网站建设百度公司注册地址在哪里
  • 新闻热点家庭优化大师下载
  • 家居企业网站建设市场适配移动网站
  • 临沂做网站优化上海网站 备案查询
  • 校园网站建设报价动易网站 首页模板修改
  • 网站建设海报沧州建设工程信息网
  • 医院网站怎么做优化排名北京网站建设有限公司
  • 蓝色通用营销型企业网站模板wordpress添加php页面
  • 北京市建设厅网站首页WordPress点击出现爱心
  • 做网站用lunx品牌形象
  • 永德网站建设网站建设服务器主板1150针
  • 基于h5的个人网站建设免费织梦导航网站模板下载
  • 怎么查看网站备案进度内蒙古住房城乡建设厅网站
  • 手机网站搭建多少钱网站建设推广顾问是什么意思
  • 上海商务网站建设网站推广渠道的类型
  • 北海手机网站建设网站开发整体制作流程
  • 网站改版意见react.js 做网站好吗
  • 高端网站建设公司哪家好建设路小学网站
  • 移动终端网站开发seo 工具
  • 坑人的网站链接怎么做wordpress建立页面打开404错误
  • 关键词分析网站ui界面设计包括哪些内容
  • 山东住房和城乡建设厅网站首页企业只有建立了自己的网站
  • 网站专业技能培训机构quiz在哪个网站做