天猫精灵语音自动化查询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

就玩玩儿,图一乐

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
运维 负载均衡 应用服务中间件
自动化运维:使用Ansible进行服务器配置管理
【9月更文挑战第34天】在现代IT运维工作中,自动化已成为提升效率、减少错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化和加速服务器的配置管理工作。我们将通过实际案例展示如何利用Ansible的Playbooks来自动化常见任务,并讨论其对提高运维团队工作效率的影响。
|
13天前
|
监控 虚拟化 云计算
从物理到云:使用自动化工具简化服务器迁移流程
【10月更文挑战第4天】随着云计算的快速发展,越来越多的企业选择将物理服务器迁移到云环境以提高效率和降低成本。本文详细介绍了使用自动化工具简化从物理到云的服务器迁移流程的技术实现细节,并提供了代码示例。
46 6
|
21天前
|
运维 应用服务中间件 网络安全
自动化运维:使用Ansible进行批量服务器配置
【9月更文挑战第35天】在现代IT基础设施管理中,高效、可扩展的自动化工具是提升工作效率的关键。本文将引导您了解如何使用Ansible这一强大的自动化工具来简化和加速服务器的配置过程,确保一致性和可靠性的同时减少人为错误。通过实际案例,我们将展示如何编写Ansible Playbook以实现批量服务器配置,从而让您能够更加轻松地管理和维护您的服务器群。
|
2天前
|
运维 负载均衡 安全
自动化运维:使用Ansible进行服务器配置管理
【10月更文挑战第15天】在本文中,我们将探讨如何利用Ansible这一强大的自动化工具来简化和加速服务器的配置管理工作。通过实际案例和代码示例,我们将展示Ansible如何帮助运维人员高效地进行软件部署、系统更新和日常维护任务,从而提升工作效率并减少人为错误。
|
5天前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
8天前
|
运维 监控 网络安全
自动化运维的魔法:如何用Python简化日常任务
【10月更文挑战第9天】在数字时代的浪潮中,运维人员面临着日益增长的挑战。本文将揭示如何通过Python脚本实现自动化运维,从而提高效率、减少错误,并让运维工作变得更具创造性。我们将探索一些实用的代码示例,这些示例将展示如何自动化处理文件、监控系统性能以及管理服务器配置等常见运维任务。准备好让你的运维工作升级换代了吗?让我们开始吧!
|
13天前
|
数据采集 人工智能 自然语言处理
Python实时查询股票API的FinanceAgent框架构建股票(美股/A股/港股)AI Agent
金融领域Finance AI Agents方面的工作,发现很多行业需求和用户输入的 query都是和查询股价/行情/指数/财报汇总/金融理财建议相关。如果需要准确的 金融实时数据就不能只依赖LLM 来生成了。常规的方案包括 RAG (包括调用API )再把对应数据和prompt 一起拼接送给大模型来做文本生成。稳定的一些商业机构的金融数据API基本都是收费的,如果是以科研和demo性质有一些开放爬虫API可以使用。这里主要介绍一下 FinanceAgent,github地址 https://github.com/AI-Hub-Admin/FinanceAgent
|
15天前
|
运维 应用服务中间件 Linux
自动化运维:使用Ansible管理服务器配置
【10月更文挑战第2天】在现代IT运维中,自动化是提高效率和减少错误的关键。本文将介绍如何使用Ansible这一强大的自动化工具来简化日常的服务器管理工作。我们将从基础讲起,逐步深入到高级应用,展示如何通过编写简单的Playbooks来自动化复杂的配置任务。文章还将探讨Ansible的最佳实践,并分享一些实际案例来说明其在实际工作中的应用。
|
16天前
|
iOS开发 MacOS Python
Python编程小案例—利用flask查询本机IP归属并输出网页图片
Python编程小案例—利用flask查询本机IP归属并输出网页图片
16 1
|
18天前
|
运维 应用服务中间件 nginx
自动化运维:使用Ansible管理服务器
【8月更文挑战第70天】随着互联网技术的飞速发展,服务器的数量和复杂性也在日益增加。如何高效、准确地管理这些服务器,成为了每一个运维人员必须面对的问题。本文将介绍如何使用Ansible这个开源的IT自动化工具,来帮助我们更好地管理服务器。Ansible以其简洁的语法、强大的功能和易于上手的特性,成为了运维人员的好帮手。我们将通过一些实际的例子,来看看Ansible是如何工作的。