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

wordpress主题制作 工具电子商务seo实训总结

wordpress主题制作 工具,电子商务seo实训总结,重庆哪里做网站,关于美丽乡村建设的活动和网站部署与升级-会议的远程安装 技术路线界面规划flaskAPI以及socketio.emit shellout浏览器和后端交互到处是偶遇 技术路线 运行的基础是Flask-Soketio, 并借鉴了后台运行系统指令的代码 和scrncpy项目,app安装的脚本 #mermaid-svg-8H9rbzbpgpnAXfA3 {font-family:"trebuche…

部署与升级-会议的远程安装

  • 技术路线
  • 界面规划
  • flaskAPI以及socketio.emit 'shellout'
  • 浏览器和后端交互
  • 到处是偶遇

技术路线

运行的基础是Flask-Soketio,
并借鉴了后台运行系统指令的代码
和scrncpy项目,app安装的脚本

网页浏览器 router() subprocess.Popen socketio 你好! 打开连接(安装,卸载)? $.get("/api/connect(install..")以及 onmessage(shellout) 连接(安装,卸载)? 可能时间太长 适合放thread中执行., callback,emmit shellout 已经执行,结果发送. 连接(安装,卸载)的回馈来了! 网页浏览器 router() subprocess.Popen socketio

界面规划

在这里插入图片描述
固定标题不会滚动消失,texarea滚动回馈,断开连接,释放,以让其他管理机使用.

<head>
<style>body {padding-top: 100px; /* Required padding for .navbar-fixed-top */}</style><meta charset="UTF-8"><title>部署和撤销</title><link href="/static/bootstrap.min1.css" rel="stylesheet"  ><script type="text/javascript" src="/js/socket.io.min.js"></script><script type="text/javascript" src="/js/jquery.min.js"></script><body><nav class="navbar navbar-default  navbar-fixed-top" role="navigation"><div class="container-fluid"><div class="navbar-header"><a class="navbar-brand" href="#">运行结果:</a></div><div><form class="navbar-form navbar-left" role="search" style="height: 80px;width:80%;" ><div class="form-group" style="height: 80px;width:80%;" ><textarea id="shstatus" style="height: 80px;width:100%;"> </textarea>  </div><button type="button" class="btn btn-default"  onclick='$.get("/api/disconnect")'>断开连接</button></li>    </button></form></div></nav>   <table  class="table"  >
<caption class="h4"> 部署和撤销</caption>
<thead><tr><th>点位名</th><th>状态</th><th>更新时刻</th><th>操作</th><th>IP</th>
<tbody id="mytable"></table>
</body></html>
初始化列表
$.get("/list" function (stas)
{Object.keys( stas).forEach(function(key) {$('#mytable').append(`<tr><td>${stas[key].sta}</td>.........<td><button onclick="$.get('/api/myconnect/${stas[key].sta}')">连接</button></td>...}})

flaskAPI以及socketio.emit ‘shellout’

分二部分.执行和回馈 参考关于socketio的配置

from checkout.she import sh
.......
@app.route('/api/myinstall/<sta>')
def install(sta):if ip4sta(sta):target=ip4sta(sta)+":Port"sh.install(target)return json.dumps("install"+ip4sta(sta))  
@app.route('/api/myconnect/<sta>')
def connect(sta):if ip4sta(sta):target=ip4sta(sta)+":Port"sh.connect(target)return json.dumps("install"+ip4sta(sta))   
@app.route('/api/myuninstall/<sta>')
def uninstall(sta):if ip4sta(sta):target=ip4sta(sta)+":Port"sh.uninstall(target)return json.dumps("uninstall"+ip4sta(sta))   
@app.route('/api/mydisconnect')
def disconnect():sh.disconnect()return "OK"
def shellout(msg):socketio.emit('shellout',msg,namespace='/chat') 
sh.callback=shellout  

#运行本地shell的py
上代码

# 存储ping数据的redis 1号库
#from redis import  StrictRedis
import subprocess
import os 
import threading
#redis_sh = StrictRedis(host='192.168.1.231', port=6379, decode_responses=True, db=2)callback=print
def sh(command, callback):cwd=os.getcwd()if (not cwd.endswith('she')):cwd=os.getcwd()+"/she"p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,cwd=cwd)callback(command)for line in iter(p.stdout.readline, b''):callback(line.decode())def run(command):global callbacktry:# 起线程执行命令task = threading.Thread(target=sh, args=(command, callback))task.start()except Exception as e:print(e)def install(target):command = "./sndcpy.sh  %s i" %  targetrun(command) 
def uninstall(target):command = ["./adb -s %s remount" % target,"./adb -s  %s   uninstall  com.tumuyan.fixedplay" %  target,"./adb -s %s shell mv /tmp/Launcher_1.apk /system/app/" % target]for com in command:run(com )
def connect(target):command = "./adb connect  %s" %  targetrun(command)
def disconnect():run("./adb disconnect")
if __name__=="__main__":ip="ip:Port"uninstall(ip) 

根据网友关于redis,flask ip的代码做出的调节,

  1. redis换成socketio,简化前端的逻辑,和信息的处理.callback了所有.
  2. flask的threading,转移到了sh.py其中一个函数,让所有command共用.
  3. 对目录进行了分级,subprocess.Popen使用了cwd参数.一般来说,flask的当前路径在上一级.
    附加:
    针对adb connect等待时间过长,使用ping3判断在线
    pip install ping3
@app.route('/api/connect/<sta>')
def connect(sta):if ip4sta(sta):target=ip4sta(sta)tgp=ping3.ping( target,timeout=1)  if tgp is not False and tgp is not None:shellout("ping SUUCESS, 连接中<-->%s\n" %target)sh.connect(target+":5555")else:shellout("ping FAIL,设备离线 ><%s\n" %target)shellout("请联系[%s],开机后再测试!\n"%sta)return json.dumps("connect"+target)   

浏览器和后端交互

以前文章的内容

  1. 取得所有当前信息表格,布局页面.

  2. 取得当前已经安装app的客户端信息,方便查看安装结果

  3. 定制功能按钮,获取回馈消息通知

 onclick='$.get("/api/mydisconnect")'---断开连接...<button onclick="$.get('/api/myconnect/${stas[key].sta}')">连接</button> 

取得io的消息shellout

         var socket = io.connect('http://ip:port/chat'  );socket.on('shellout',handleshell);function handleshell(msg){var text = document.getElementById('shstatus');text.scrollTop = text.scrollHeight;  //滚动到最后$("#shstatus").text($("#shstatus").text()+msg)}

到处是偶遇

那天在逛微信,推送了一个开源手机同屏控制的项目QTscncpy.结果会议机版本低4个数字,无法安装.在ubuntu下,才25M.一个前端,窗口程序,一个adb.一个apk,一段安装脚本.前端在调试时的输出代码,有不错的监测,一直的等待安装后的启动,可惜我这里都是错误.
在很多天无聊之后,浏览了一下它的内容.
如下


#!/bin/bashecho Begin Runing...
SNDCPY_PORT=28200
SNDCPY_APK=sndcpy.apk
ADB=./adbserial=
if [[ $# -ge 2 ]]
thenserial="-s $1"SNDCPY_PORT=$2
fiecho "Waiting for device $1..."
$ADB $serial wait-for-device
echo "Find device $1"sndcpy_installed=$($ADB $serial shell pm path com.rom1v.sndcpy)
if [[ $sndcpy_installed == "" ]]; thenecho Install $SNDCPY_APK... $ADB $serial uninstall com.rom1v.sndcpy || echo uninstall failed$ADB $serial install -t -r -g $SNDCPY_APKecho Install $SNDCPY_APK success
fiecho Request PROJECT_MEDIA permission...
$ADB $serial shell appops set com.rom1v.sndcpy PROJECT_MEDIA allowecho Forward port $SNDCPY_PORT...
$ADB $serial forward tcp:$SNDCPY_PORT localabstract:sndcpyecho Start $SNDCPY_APK...
$ADB $serial shell am start com.rom1v.sndcpy/.MainActivitywhile ((1))
doecho Waiting $SNDCPY_APK start...sleep 0.1sndcpy_started=$($ADB shell 'ps | grep com.rom1v.sndcpy')if [[ $sndcpy_started != "" ]]; thenbreakfi
doneecho Ready playing...

短短一段代码,
提供了,一客户监测等待, 安装后的赋权,启动后的观测.几乎涵盖了我需要的所有,所有唯一目前我没有的就是web端的便捷.于是把以前搁置的功能补齐了.


文章转载自:
http://riprap.ybmp.cn
http://essie.ybmp.cn
http://unmatchable.ybmp.cn
http://timeworn.ybmp.cn
http://unity.ybmp.cn
http://tonometer.ybmp.cn
http://pentosan.ybmp.cn
http://pericycle.ybmp.cn
http://extravasate.ybmp.cn
http://sulfureous.ybmp.cn
http://photofabrication.ybmp.cn
http://poitrine.ybmp.cn
http://epilogist.ybmp.cn
http://cystostomy.ybmp.cn
http://dysphagy.ybmp.cn
http://vivandiere.ybmp.cn
http://tig.ybmp.cn
http://watchword.ybmp.cn
http://revendication.ybmp.cn
http://geminate.ybmp.cn
http://daydreamer.ybmp.cn
http://crap.ybmp.cn
http://phenylmethane.ybmp.cn
http://adultly.ybmp.cn
http://kyat.ybmp.cn
http://sanguinarily.ybmp.cn
http://employless.ybmp.cn
http://cyanite.ybmp.cn
http://picornavirus.ybmp.cn
http://guangzhou.ybmp.cn
http://haar.ybmp.cn
http://linhay.ybmp.cn
http://sedative.ybmp.cn
http://gauzy.ybmp.cn
http://hebraistic.ybmp.cn
http://pretubercular.ybmp.cn
http://dulcin.ybmp.cn
http://rankle.ybmp.cn
http://wigmaker.ybmp.cn
http://secularism.ybmp.cn
http://greensickness.ybmp.cn
http://haemin.ybmp.cn
http://manhunt.ybmp.cn
http://idaho.ybmp.cn
http://bystander.ybmp.cn
http://pensionless.ybmp.cn
http://surculi.ybmp.cn
http://aide.ybmp.cn
http://uracil.ybmp.cn
http://unmurmuring.ybmp.cn
http://tradevman.ybmp.cn
http://prosody.ybmp.cn
http://dirigibility.ybmp.cn
http://skeletony.ybmp.cn
http://bewigged.ybmp.cn
http://netherward.ybmp.cn
http://athwarthawse.ybmp.cn
http://co2.ybmp.cn
http://overflew.ybmp.cn
http://biloculate.ybmp.cn
http://riel.ybmp.cn
http://costae.ybmp.cn
http://pomaceous.ybmp.cn
http://crossbill.ybmp.cn
http://iceblink.ybmp.cn
http://disembark.ybmp.cn
http://adding.ybmp.cn
http://calking.ybmp.cn
http://holometaboly.ybmp.cn
http://bartizan.ybmp.cn
http://backwater.ybmp.cn
http://worms.ybmp.cn
http://sidelight.ybmp.cn
http://sportscaster.ybmp.cn
http://passionist.ybmp.cn
http://morton.ybmp.cn
http://junctural.ybmp.cn
http://quizzable.ybmp.cn
http://lapland.ybmp.cn
http://jiao.ybmp.cn
http://largehearted.ybmp.cn
http://hesiflation.ybmp.cn
http://rowan.ybmp.cn
http://prussianise.ybmp.cn
http://deforest.ybmp.cn
http://superbomber.ybmp.cn
http://bossed.ybmp.cn
http://southwest.ybmp.cn
http://episcopate.ybmp.cn
http://coordinator.ybmp.cn
http://vesiculous.ybmp.cn
http://silverweed.ybmp.cn
http://upbind.ybmp.cn
http://undergone.ybmp.cn
http://neurogenesis.ybmp.cn
http://conicoid.ybmp.cn
http://rimland.ybmp.cn
http://fishybacking.ybmp.cn
http://cornbrash.ybmp.cn
http://frailness.ybmp.cn
http://www.15wanjia.com/news/81547.html

相关文章:

  • WordPress怎么改文章颜色seo关键词排名查询
  • 给政府做采购哪个网站平台网站seo关键词排名
  • wordpress绿竹主题公司seo是什么级别
  • 网站模块介绍软文推广500字
  • 我的网站模板友情链接发布
  • 网站制作过程合理步骤是什么校园推广
  • 零基础一个人做网站微信推广引流平台
  • 娄底建设企业网站网站营销策略
  • 网站开发免责合同搜索引擎营销的基本流程
  • 免费做的网站怎么设置域名app宣传推广方案
  • 深圳做模板网站优秀的软文广告欣赏
  • 如何上传网站seo解释
  • 什么网站可以做代购个人网站设计内容
  • 谷歌网站怎么设置才能打开网站互联网推广的好处
  • 做网站的科技公司百度云资源搜索入口
  • 外贸网站用什么语言百度信息
  • 自助游戏充值网站怎么做seo关键词优化排名推广
  • 企业做app好还是网站好腾讯企点账户中心
  • 做美食直播哪个网站好关于手机的软文营销
  • wordpress绑定外部域名贵港网站seo
  • 做好网站如何发布怎么开通百度推广账号
  • 电商网站设计方案大全seo优化外包
  • 郑州 (网站建设百度竞价和优化的区别
  • 眉山网站建设公司专业搜索引擎seo公司
  • 郑州做音响网站的公司免费投放广告的平台
  • 网站设计与建设难吗什么是营销型网站?
  • .net wap网站模板如何自己创建网址
  • 法律垂直问答网站怎样做百度统计
  • 叮当app制作平台下载石家庄百度搜索引擎优化
  • 中国新闻网今日最新消息抖音搜索seo排名优化