天猫精灵语音自动化查询ECS服务器内存剩余-基于Python实现

简介: 最近比较忙,又不太擅长开发,但是想着社区的活动还是要参加一下的哈哈哈哈哈哈,俺略懂一些python,于是选用python作为后端FaaS的语言进行简单的脚本编写

开发能力我还是太弱了,但是平常接触python会多一点,包括一些自动化运维之类的开发。我这里就编写一个简单的python后端脚本,通过paramiko模块ssh功能,实现天猫精灵通过语音召唤还有内存吗”,自动化去查询我在阿里云上的ECS服务器内存剩余。

后续有时间,我可能会丰富一下功能,加入一些常用的运维查询功能。


天猫精灵技能应用平台提供了从语音交互模型定义、语义解析理解能力,到技能开发、测试、部署的一整套开发工具和便捷的可视化操作工作台,帮助开发者高效地将各类技能应用快速接入到天猫精灵音箱以及精灵生态硬件终端。

目前平台支持以下几种应用类型的接入:

  • 语音技能
  • 灵活定义语音交互方式,开发业务逻辑代码、创建屏显页面来响应任意的用户语音请求。
  • 小程序
  • 支持将支付宝小程序快速迁移到天猫精灵设备,同时也可利用内容模板小程序快速完成内容变现。
  • 安卓Android APP应用
  • 支持快速接入安卓生态应用,与天猫精灵带屏端设备无缝打通,同时支持语音交互能力。
  • H5网页小游戏
  • 无需开发,支持现成H5网页小游戏的快速接入,同时支持语音唤起。



一、创建语言技能

选择自定义技能

 

 

image.png

 

填写基本的信息,输入调用词,通过喊这个调用词实现唤出

选择FAAS

image.png

 

进入技能后,选择后端服务,选择服务部署,选择阿里云云原生开发

image.png

 

 

选择关联阿里云账户

 

image.png

 

授权访问

image.png

 

完成后选择Python开发语言,选择空白模板

image.png

 

完成后端的服务部署

image.png

 

二、配置语音交互模型

我这里实现比较简单,后端没有从前端json获取参数,交互就随意配置了

配置意图,简单写个名称

image.png

可以配置一些固定问答

 

image.png

 

三、后端代码开发

进入代码编辑,前往webide

image.png

进入给的默认模板index

image.png

 

大概看一下给的模板代码

 

import logging
import json
import base64
#导入模块
def handler(event, context):
    request = json.loads(event)
    logger = logging.getLogger()
    body = base64.b64decode(request['body']).decode()
    data = json.loads(body) 
    logger.info(data)
#定义了获取json数据,存放在body
#响应数据库,回复内容在reply里面
    response = {
        "isBase64Encoded": "false",
        "statusCode": "200",
        "headers": {"content-type": "application/json"},
        "body": {
            "returnCode": "0",
            "returnErrorSolution": "",
            "returnMessage": "",
            "returnValue": {
                "reply": "欢迎使用",
                "resultType": "RESULT",
                "executeCode": "SUCCESS",
                "msgInfo": ""
            }
        }
    }

 

我们可以做个简单测试,看一下前端传参数json大概有什么,在reply这里将数据包的内容body显示。这样后续可以针对json包提取数据做其他功能

image.png

 

测试一下,可以看到json结构

image.png

 

 

 

PS:我后来发现原来在fc的日志里也可以看到,当然可以在日志里看了,为什么我一开始没想到呜呜QAQ

image.png

 

修改我们代码,我们通过paramiko模块实现SSH功能,在收到唤醒的请求后,直接运行ssh登录到服务器并执行查询内存的shell命令

# @by : Taoreset
import logging
import json
import base64
import paramiko   #导入paramiko模块
def handler(event, context):
    request = json.loads(event)
    logger = logging.getLogger()
    body = base64.b64decode(request['body']).decode()
    data = json.loads(body)
    logger.info(data)
   #在收到唤醒的请求后,直接进入ecs_mem_free()函数
    replydata = ecs_mem_free()
    response = {
        "isBase64Encoded": "false",
        "statusCode": "200",
        "headers": {"content-type": "application/json"},
        "body": {
            "returnCode": "0",
            "returnErrorSolution": "",
            "returnMessage": "",
            "returnValue": {
               "reply": replydata,   #返回结果
                "resultType": "RESULT",
                "executeCode": "SUCCESS",
                "msgInfo": ""
            }
        }
    }
    return response
#定义一个执行SSH查询内存命令的函数
def ecs_mem_free():
    cmd = 'cat /proc/meminfo |grep -w "MemFree" | tr -cd "[0-9]"'  ##执行的shell命令
    user = '用户名'
    passwd = '密码'
    host = '服务器地址'
    ssh = paramiko.SSHClient()
   ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(host,'22',user,passwd)
    stdin, stdout, stderr = ssh.exec_command(cmd)
    res,err = stdout.read(),stderr.read()
    result = res if res else err
    ans = "您的ECS内存还有: "+result.decode()+' KB'
    ssh.close()
    return ans

 

 

由于paramiko不在平台的内置模块里,我们需要手动在终端执行打包下载paramiko模块依赖

python -m pip install --upgrade pip
pip install -t . paramiko

image.png

 

所有修改完成了,需要在git里提交一下,修改保存到codeup代码仓库

image.png

 

最后部署,部署到预发环境进行测试

image.png

 

 

四、测试

最后效果,当然,剩余内存在动态变更

image.png

直接输入唤醒词,返回ECS上的查询结果。也可以定义一些固定的数据,进行预设的问答

image.png

 

后续可以将开发完成的技能进行发布,我这里功能太简单了,纯属体验,就不发布啦

image.png

就玩玩儿,图一乐

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
11天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
46 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
6天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
24 2
|
8天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
21 3
|
7天前
|
数据采集 IDE 测试技术
Python实现自动化办公:从基础到实践###
【10月更文挑战第21天】 本文将探讨如何利用Python编程语言实现自动化办公,从基础概念到实际操作,涵盖常用库、脚本编写技巧及实战案例。通过本文,读者将掌握使用Python提升工作效率的方法,减少重复性劳动,提高工作质量。 ###
20 1
|
12天前
|
安全 开发者 Python
Python的内存管理pymalloc
Python的内存管理pymalloc
|
14天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
15天前
|
数据管理 程序员 数据处理
利用Python自动化办公:从基础到实践####
本文深入探讨了如何运用Python脚本实现办公自动化,通过具体案例展示了从数据处理、文件管理到邮件发送等常见办公任务的自动化流程。旨在为非程序员提供一份简明扼要的实践指南,帮助他们理解并应用Python在提高工作效率方面的潜力。 ####
|
15天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
15天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。