建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

高晓云

发帖: 33粉丝: 20

级别 : 管理员

Rank: 9Rank: 9Rank: 9

发消息 + 关注

发表于2019-4-12 11:16:41 2901 5 楼主 显示全部楼层
[干货分享] 欢迎体验华为云CLI命令行工具HCloud

华为云命令行工具 HCloud CLI由华为云专家贵哥个人作品,欢迎大家下载使用并留言反馈意见。


华为云命令行工具 CLI(Huawei Cloud CLI)是基于华为云开放 API 建立的管理工具。借助此工具,您可以通过调用华为云开放 API 来管理华为云产品。该命令行工具与华为云开放 API 一一对应,灵活性高且易于扩展。

为什么命令行 CLI

公有云产品作为一个平台, 主要的用户是 企业IT管理员、企业应用开发者。 Web UI 界面易用, 但操作难以复用、难以保障用户每次操作的顺序的准确性。 而 RESTful API 提供了更强大的功能, 同时门槛也提升了不少。  为了让用户使用熟悉的命令行、Shell 脚本甚至 TCL、Python 这样的动态语言来快速、方便的操作华为云, 提供 华为云命令行 CLI 工具。

华为云CLI工具, 基于开放 RESTful API, 无需服务器侧做任何操作, 即可将当期的开放API提供更易用的 CLI。 同时,基于元数据和自动更新, API增加、修改等可快速无感更新 CLI 工具。

参考: 华为云 CLI 在命令格式和参数上参考了 阿里云 CLI 和 Google Cloud CLI( https://cloud.google.com/sdk/gcloud/reference/ ), 并吸收华为CC08的MML等能力和架构。


特性:

HCloud CLI 命令行工具, 基于 GO-lang 开发, 基于元数据驱动+引擎, 采用 YAML、JSON、Handlebar 等, 具备如下特性:


  1.  单一可执行文件, 绿色安装, 随便拷贝安装

  2.  多操作系统支持, 包括 Linux、Windows、Mac 等

  3.  自动更新命令描述。 系统自动从华为主网站更新命令元数据描述

    每次用户启动会话更新, 压缩传输, 低于 1s 版本更新

    元数据为 YAML 和 JSON 文件, 安全可靠

  4.  可扩展。 您可基于该命令行工具对华为云原生 API 进行封装,扩展出您想要的功能

  5. 参数校验能力, 如 enum 类型、数字的范围等

  6. 多种输出格式, 支持 json、table、csv、 value 等多种可自定义的格式。


用户指南

华为云 CLI 安装指导

华为云 CLI 支持

华为云 CLI 采用 GO-lang 开发, 只有一个可执行文件, 可以支持几乎所有操作系统, 包括 Windows、Linux 和 Mac OS 等。

安装指导

直接从网站下载对应操作系统的可执行文件, 并放到 PATH 中合适的目录即可。 如 Linux, 请下载 hcloud , 并放入 /usr/local/bin 目录即可。

命令描述文件

华为云 CLI 自动从中心网站下载命令描述文件。 命令描述文件为 yaml 和 json 格式的文本文件, 并存放在用户数据目录中。

  • Linux:  ~/.hcloud 目录

  • Windows: C:\User\Your Account\AppData\hcloud 目录

华为云 CLI 命令描述文件压缩传输, 文件大约不到 100KB。 华为云 CLI 在用户当前会话过期后, 至少三天进行一次检查新版本。


华为云 CLI 命令格式与参数指南

典型命令格式

在华为云 CLI 中, 典型的命令格式如 hcloud ecs start  a44e57e8-a37c-4bcc-b388-a98ab0a51867  --verbosity=debug --format="json"。 其中主要分成如下几部分:

  • hcloud , 华为云CLI命令

  • ecs start, 命令组、命令指令

  • a44e57e8-a37c-4bcc-b388-a98ab0a51867, 命令参数, 可能没有, 也可能有许多多, 采用空格分开

  •  --verbosity=debug --format="json" , 全局辅助参数

在下面分别进行详细介绍。

命令组、命令指令

除了几个特别的命令, help、logout 等外, 其它的命令都由两个部分组成: 命令组、命令指令。

   命令组一般与服务相关, 如 ecs、vpc、cce、cse 等, 命令指令一般是动作, 如 list、create、delete、start、shutdown 等, 也有时候包含子服务和动作, 如 cluster/list, cluster/create 等。 一般来说, 命令组和命令指令都是小写单词。

   详细的命令组、命令指令的列表, 请参见华为云 CLI 命令参考指南, 比较常见的如下:

hcloud ecs list
hcloud ecs create
hcloud ecs start
hcloud ecs shutdown
hcloud ecs delete
hcloud vpc list
hcloud vpc create
hcloud cce cluster/list
hcloud cce cluster/delete
hcloud cce cluster/create
hcloud cce deployment/list

命令参数

###参数名称与顺序

   在华为云CLI命令参数, 支持多种表达形式:

  • 按顺序的写法

  • 长名称

  • 短名称

如下面的三条命令的含义相同:

hcloud iam login szfugui  Password mydomain
hcloud iam login --username=szfugui --password=Password --domain=mydomain
hcloud iam login -u=szfugui -p=password -d=mydomain

采用名称(无论长名称还是短名称)  时, 参数没有顺序依赖, 可以交换顺序, 不影响命令执行。 

   无论单值顺序模式, 还是长短名称模式, 都必须是单一字符串。 为了确保参数的正确性, 建议参数包含在 双引号(“”)内, 如: --format="table(id)"。


参数默认值

部分命令参数有默认值, 请参考各命令的文档。 


必填参数

如果非 --body 与--source参数时, 部分参数可能是必须输入的, 如果没有输入, 则命令行会提示参数输入不完整。


全局辅助参数

华为云 CLI 的全局辅助参数, 没有短名称, 也没有序号, 必须采用全名的模式来书写。 如 --verbosity=debug。 与普通命令参数存在此差异。 除此外, 其它要求与普通命令参数一致。


全局辅助参数主要有:

自定义请求体 body 参数

--body="{'id':'自定义请求体'}" 。 在 华为CLI 中, 命令创建者为了简化使用, 抽取了部分参数作为命令行参数, 可以快速实现命令。 但由于参数太多或者不常用, 部分信息采用"默认值",而无法直接修改。 --body参数可以完整控制 RESTful 的请求体。

   当 --body参数出现时, 命令本身的命令参数将不再生效, 由body覆盖。


自定义请求体 source 参数

--source参数与 --body参数非常相似, 唯一的是从磁盘文件中读取, 而不是直接在命令行上输入。 如:

hcloud ecs create --source=createvm.json


当 --source参数出现时, 命令本身的命令参数将不再生效, 由body覆盖。  如果一个命令同时存在 --body和--source,则--body优先, --source不再生效。


输出格式控制 format 参数

通用输出格式参数 --format , 在所有的命令都支持该参数。 如未指定该参数, 则

    当前共支持:


  1. raw  将命令的 RESTful 响应体完整的输出, 不进行任何的处理(只进行友好显示格式化)。

  2. json 采用命令定义的友好json输出格式。 具体输出格式通过命令的 metadata 中的 "output/json" 章节定义

  3. table 采用表格的形式进行展示。 具体的输出列由命令的 metadata 中的 output/table  章节定义

  4. csv 采用文本形式进行展示, 各列之间采用逗号(,)分隔。 第一行是标题行。具体的输出列由命令的 metadata 中的 output/table  章节定义

  5. value 只显示值, 一般在脚本/script中常用。 与 csv 相似, 只是没有标题行。具体的输出列由命令的 metadata 中的 output/table  章节定义

    详细内容, 见 华为云 CLI 输出格式


系统输出控制 verbosity

--verbosity 控制系统输出,当前支持的级别包括 debug, info, warning, error, critical, none.  比较常用的是 --verbosity=debug, 进行命令调试, 可以观察到系统内部的大量临时数据、网络传输数据等。


长任务等待控制 wait

--wait=true  或者  --wait=false  命令控制长事务操作的结果。 例如创建虚拟机等需要较长时间,     --wait=true  将查询创建VM 的 job 是否完成, 等待完成后才返回。 

    不同的任务的操作时长不相同, 有部分命令很快就执行完成, 但有的命令, 如创建 CCE Cluster 则可能需要超过10分钟。


help

usage: Display detailed help


param: version

usage: Print version information and exit


华为云 CLI 输出格式使用说明

命令指引

通用输出格式参数 --format , 在所有的命令都支持该参数。 如未指定该参数, 则

    当前共支持:

  1. raw  将命令的 RESTful 响应体完整的输出, 不进行任何的处理(只进行友好显示格式化)。

  2. json 采用命令定义的友好json输出格式。 具体输出格式通过命令的 metadata 中的 "output/json" 章节定义

  3. table 采用表格的形式进行展示。 具体的输出列由命令的 metadata 中的 output/table  章节定

  4. csv 采用文本形式进行展示, 各列之间采用逗号(,)分隔。 第一行是标题行。具体的输出列由命令的 metadata 中的 output/table  章节定义

  5. value 只显示值, 一般在脚本/script中常用。 与 csv 相似, 只是没有标题行。具体的输出列由命令的 metadata 中的 output/table  章节定义


原生格式 raw

--format=raw, 不支持任何其它参数。 

    Raw 原生格式不需要任何参数与配置, 直接将 RESTful API 的输出 BODY 进行 JSON 格式化后, 进行展示。 


JSON 格式

--format=json, 不支持任何其它参数。

     Json 格式是经过命令开发人员手工优化的输出, 其定义在命令定义文件的 output/json 章节。 采用 Handerbar 模板, 对原生的数据(包括各种内部数据、输入输出数据等)进行聚合、优化、整合等, 进行友好展示结果。


TABLE表格格式

--format=table, 可以不带参数, 也可以对展示列进行指定。

    表格格式采用类似文本表格的模式, 对输出数据进行二维展示。 


hcloud ecs list --format=table
┌─────┬────────────────┬─────────────────┬────────────────────────┬───────┐
│Index│       Id       │      Name       │       IP Address       │Status │
├─────┼────────────────┼─────────────────┼────────────────────────┼───────┤
│    1│73ac0862-09f8...│crc-cluster-15536│192.168.0.10|49.4.87.246│ACTIVE │
│    2│a44e57e8-a37c...│abchow-docker    │192.168.0.128           │SHUTOFF│
└─────┴────────────────┴─────────────────┴────────────────────────┴───────┘



表格中“列”的定义, 在 output/table 中进行定义。 支持指定最大宽度、Label、数据来源、对齐模式(默认左对齐,支持居中对齐、右对齐)等。


根据需要, 可以只显示其中的一列或者几列, 可以指定需要显示的列, 采用 --format="table(col1,col2,col3)" 的格式进行指定, 如:


hcloud ecs list --format="table(index,id,name,status)"
┌─────┬────────────────────────────────────┬─────────────────┬───────┐
│Index│                 Id                 │      Name       │Status │
├─────┼────────────────────────────────────┼─────────────────┼───────┤
│    1│73ac0862-09f8-4912-af76-04052ef42f74│crc-cluster-15536│ACTIVE │
│    2│a44e57e8-a37c-4bcc-b388-a98ab0a51867│abchow-docker    │SHUTOFF│
└─────┴────────────────────────────────────┴─────────────────┴───────┘


有指定列的时候, 配置中指定的“最大宽度”不发生作用, 将字符串的全部数据展示出来, 以满足用户的完整需求。


CSV 文本格式

--format=csv, 可以不带参数

--format=csv(col1,col2,col3), 也可以对展示列进行指定。

 CSV文本模式时, 采用逗号(,)对标题和值进行分隔, 便于其它脚本script对输出进行处理。  命令示例如下:

hcloud ecs list --format="csv(index,id,name,status)"
Index,Id,Name,Status
1,73ac0862-09f8-4912-af76-04052ef42f74,crc-cluster-15536,ACTIVE
2,a44e57e8-a37c-4bcc-b388-a98ab0a51867,abchow-docker,SHUTOFF

VALUE 纯值格式

--format=value, 可以不带参数

--format=value(col1,col2,col3), 也可以对展示列进行指定。

 VALUE文本模式时,如果有多列, 采用逗号(,)对进行分隔, 便于其它脚本script对输出进行处理。  命令示例如下:

hcloud ecs list --format="csv(index,id,name,status)"
1,73ac0862-09f8-4912-af76-04052ef42f74,crc-cluster-15536,ACTIVE
2,a44e57e8-a37c-4bcc-b388-a98ab0a51867,abchow-docker,SHUTOFF


如果只有单列:

hcloud ecs list --format="value(id)"
73ac0862-09f8-4912-af76-04052ef42f74
a44e57e8-a37c-4bcc-b388-a98ab0a51867

最佳实践

虚拟机域名访问全流程

用户登录系统

hcloud iam login 用户名 密码
{
  "result": "201 Created",
  "expires_at": "2019-02-08T15:04:19.073000Z"
}


如果是子账号登录


hcloud iam login 子账号 密码 域名称/主账号
{
  "result": "201 Created",
  "expires_at": "2019-02-08T15:06:09.017000Z"
}



查询当前虚拟机情况


hcloud ecs list --format=table
┌─────┬────────────────┬─────────────────┬────────────────────────┬───────┐
│Index│       Id       │      Name       │       IP Address       │Status │
├─────┼────────────────┼─────────────────┼────────────────────────┼───────┤
│    1│73ac0862-09f8...│crc-cluster-15536│192.168.0.10|49.4.87.246│SHUTOFF│
│    2│a44e57e8-a37c...│abchow-docker    │192.168.0.128           │SHUTOFF│
└─────┴────────────────┴─────────────────┴────────────────────────┴───────┘



当前磁盘镜像查询


hcloud ims list --id=a347c189-4d3a-4096-bd72-0ad2be959470 --format=table
┌─────┬────────────────────────────────────┬─────────────────────────┬───────┬───────┬────────┬──────┐
│Index│                 Id                 │          Name           │OS Type│Min_ram│Min_disk│Status│
├─────┼────────────────────────────────────┼─────────────────────────┼───────┼───────┼────────┼──────┤
│    1│a347c189-4d3a-4096-bd72-0ad2be959470│Ubuntu 18.04 server 64bit│Linux  │1024   │40      │active│
└─────┴────────────────────────────────────┴─────────────────────────┴───────┴───────┴────────┴──────┘


获取当前存在的VPC和子网


hcloud vpc list --format=table
┌────────────────────────────────────┬────────┬──────────────┬──────┐
│                 Id                 │  Name  │     Cidr     │Status│
├────────────────────────────────────┼────────┼──────────────┼──────┤
│1f30f26a-f6cd-4626-bf41-da4864529616│        │192.168.0.0/16│OK    │
│2d203648-d1cd-4782-a083-0d5323f8ca72│        │192.168.0.0/16│OK    │
│45825956-13e0-4e04-9364-606f94ce3011│        │192.168.0.0/16│OK    │
│4a0ff926-978b-4dae-be68-37640d513a1c│        │192.168.0.0/16│OK    │
│4c3de781-6762-405c-a802-05f2e8c1fdcc│vpc-paas│192.168.0.0/16│OK    │
│5066abd7-5c81-4298-9772-3fad6ddd90a3│myvpc   │172.20.0.0/16 │OK    │
│5c4d190b-55d6-4f70-822e-fc76ac31266a│        │192.168.0.0/16│OK    │
│842c2ab8-0326-48be-97ac-f5a14b809f9e│        │192.168.0.0/16│OK    │
│87eeadef-2716-4e51-a81b-8e7a5d2be023│        │192.168.0.0/16│OK    │
│995bd92b-e1e2-40b3-a7bd-03e97c9b0560│        │192.168.0.0/16│OK    │
│99b0eec9-565f-4f41-a52a-a21263d1c235│        │192.168.0.0/16│OK    │
│9d1b88bc-5f94-445d-9fc3-c5a66332d4d9│        │192.168.0.0/16│OK    │
│b7b6eb7e-19e5-47d2-ab8b-0e2fb6dc33a9│        │192.168.0.0/16│OK    │
│c813be70-48f2-4d89-9153-4b4832a875e0│        │192.168.0.0/16│OK    │
│f8f4dc7d-4784-487c-a079-eafa3d5cfed8│        │192.168.0.0/16│OK    │
│fbf6db89-32a4-415a-885b-a54e08b0384f│        │192.168.0.0/16│OK    │
└────────────────────────────────────┴────────┴──────────────┴──────┘



获取 VPC 下的子网


hcloud vpc subnet/list --format=table
┌────────────────────────────────────┬───────────┬────────────────────────────────────┬───────────────┬────────────┬────┬──────┐
│                 Id                 │   Name    │                VPC                 │     Cidr      │  Gateway   │DHCP│Status│
├────────────────────────────────────┼───────────┼────────────────────────────────────┼───────────────┼────────────┼────┼──────┤
│18214a77-c396-409a-b181-8d0b240f4a0b│subnet1    │1f30f26a-f6cd-4626-bf41-da4864529616│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│1dbd8f82-15ab-4f5d-8937-b1a1dc0d1b61│subnet1    │45825956-13e0-4e04-9364-606f94ce3011│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│26cfab59-10e6-4503-be50-aec829820109│subnet1    │fbf6db89-32a4-415a-885b-a54e08b0384f│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│2aa5d37e-205c-4256-920f-951f514dc522│subnet1    │995bd92b-e1e2-40b3-a7bd-03e97c9b0560│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│3cdfa0d0-c39c-4a6a-a4f8-926744e572c2│subnet1    │5c4d190b-55d6-4f70-822e-fc76ac31266a│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│423b253a-d5f3-4915-8990-2d2c302b68c6│mysubnet   │5066abd7-5c81-4298-9772-3fad6ddd90a3│172.20.1.0/24  │172.20.1.1  │true│ACTIVE│
│4d62391d-e6f9-435e-8fba-8a2e3682f03c│subnet1    │87eeadef-2716-4e51-a81b-8e7a5d2be023│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│6cbfe2f6-36a1-46d7-beef-19ae0e4b3351│subnet1    │b7b6eb7e-19e5-47d2-ab8b-0e2fb6dc33a9│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│7446c808-68df-4e6d-9f80-b5b1a86d049f│subnet1    │4a0ff926-978b-4dae-be68-37640d513a1c│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│7**5d85-94ae-4f7b-8833-d31eaf62e827│subnet1    │3413fe9e-83bf-4a9b-b020-c8999adc89cb│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│889e7f27-231a-4bf6-a3cf-8339e6746ba5│subnet1    │c813be70-48f2-4d89-9153-4b4832a875e0│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│9dfcb3e7-9be9-464d-8f53-fe42787beb94│subnet1    │2d203648-d1cd-4782-a083-0d5323f8ca72│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│c9f75b54-078d-4cdc-b31f-0e9d9f30a837│subnet1    │56284d2a-518e-4800-85bb-2cd3dacad53e│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│cc00a4f0-ca72-4119-a6be-9012f6c2ac6a│subnet-paas│4c3de781-6762-405c-a802-05f2e8c1fdcc│192.168.0.0/24 │192.168.0.1 │true│ACTIVE│
│d0834208-0025-46c0-bc45-9c9345b1d065│subnet1    │f8f4dc7d-4784-487c-a079-eafa3d5cfed8│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│e2926843-60d0-4d43-ac47-a9e48fb255d7│subnet1    │9d1b88bc-5f94-445d-9fc3-c5a66332d4d9│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│e3192175-096f-4343-b4ae-e473f1c50a1b│subnet1    │99b0eec9-565f-4f41-a52a-a21263d1c235│192.168.20.0/24│192.168.20.1│true│ACTIVE│
│f8576dc0-0ef2-4603-8dcf-f0eec6e7bd65│subnet1    │842c2ab8-0326-48be-97ac-f5a14b809f9e│192.168.20.0/24│192.168.20.1│true│ACTIVE│
└────────────────────────────────────┴───────────┴────────────────────────────────────┴───────────────┴────────────┴────┴──────┘


查询指定 VPC 下的子网列表


hcloud vpc subnet/list 4c3de781-6762-405c-a802-05f2e8c1fdcc  --format=table
┌────────────────────────────────────┬───────────┬────────────────────────────────────┬──────────────┬───────────┬────┬──────┐
│                 Id                 │   Name    │                VPC                 │     Cidr     │  Gateway  │DHCP│Status│
├────────────────────────────────────┼───────────┼────────────────────────────────────┼──────────────┼───────────┼────┼──────┤
│cc00a4f0-ca72-4119-a6be-9012f6c2ac6a│subnet-paas│4c3de781-6762-405c-a802-05f2e8c1fdcc│192.168.0.0/24│192.168.0.1│true│ACTIVE│
└────────────────────────────────────┴───────────┴────────────────────────────────────┴──────────────┴───────────┴────┴──────┘



创建一个VM


hcloud ecs create myvm --image=a347c189-4d3a-4096-bd72-0ad2be959470 --vpc=4c3de781-6762-405c-a802-05f2e8c1fdcc --subnet=cc00a4f0-ca72-4119-a6be-9012f6c2ac6a
{
    "begin_time" : "2019-02-07T21:37:10.619Z",
    "end_time" : "2019-02-07T21:38:15.807Z",
    "error_code" : null,
    "fail_reason" : null,
    "status" : "SUCCESS",
    "entities" : {
        "sub_jobs_total" : 1,
        "sub_jobs" : [
            {
                "job_id" : "8aace0c6689a2a300168c9e4a26d2313",
                "job_type" : "createSingleServer",
                "begin_time" : "2019-02-07T21:37:10.765Z",
                "end_time" : "2019-02-07T21:38:09.710Z",
                "error_code" : null,
                "fail_reason" : null,
                "status" : "SUCCESS",
                "entities" : {
                    "server_id" : "a8077071-1e1e-4ef2-bcf2-ec9b3adf6e09"
                }
            }
        ]
    },
    "job_id" : "8aace0c6689a2a300168c9e4a1dc2310",
    "job_type" : "createServer"
}


检查VM创建情况:


hcloud ecs list --format=table
┌─────┬────────────────────────────────────┬─────────────────┬────────────────────────┬───────┐
│Index│                 Id                 │      Name       │       IP Address       │Status │
├─────┼────────────────────────────────────┼─────────────────┼────────────────────────┼───────┤
│    1│a8077071-1e1e-4ef2-bcf2-ec9b3adf6e09│myvm             │192.168.0.129           │ACTIVE │
│    2│73ac0862-09f8-4912-af76-04052ef42f74│crc-cluster-15536│192.168.0.10|49.4.87.246│ACTIVE │
│    3│a44e57e8-a37c-4bcc-b388-a98ab0a51867│abchow-docker    │192.168.0.128           │SHUTOFF│
└─────┴────────────────────────────────────┴─────────────────┴────────────────────────┴───────┘


使用完成后停机并删除该VM


hcloud ecs shutdown a8077071-1e1e-4ef2-bcf2-ec9b3adf6e09
hcloud ecs delete a8077071-1e1e-4ef2-bcf2-ec9b3adf6e09
hcloud ecs list --format=table
┌─────┬────────────────────────────────────┬─────────────────┬────────────────────────┬───────┐
│Index│                 Id                 │      Name       │       IP Address       │Status │
├─────┼────────────────────────────────────┼─────────────────┼────────────────────────┼───────┤
│    1│73ac0862-09f8-4912-af76-04052ef42f74│crc-cluster-15536│192.168.0.10|49.4.87.246│ACTIVE │
│    2│a44e57e8-a37c-4bcc-b388-a98ab0a51867│abchow-docker    │192.168.0.128           │SHUTOFF│
└─────┴────────────────────────────────────┴─────────────────┴────────────────────────┴───────┘


hcloud-master-dfd1ba51ff0c2ddd73ad7f82762e0951bbee2766.zip 39.68 KB,下载次数:42

回复 举报
分享

分享文章到朋友圈

分享文章到微博

技术火炬手

发帖: 60粉丝: 4

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2019-4-12 14:28:06 沙发 显示全部楼层

可以,很实用,顶起来~

点赞 回复 举报

花飞

发帖: 8粉丝: 10

级别 : 管理员

Rank: 9Rank: 9Rank: 9

发消息 + 关注

发表于2019-4-12 14:29:53 板凳 显示全部楼层

围观一下大神作品!

点赞 回复 举报

华为小云

发帖: 0粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-4-12 14:30:38 地板 显示全部楼层

来了老哥!这个稳

点赞 回复 举报

回头有幸福...

发帖: 2粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2019-4-12 14:32:07 5# 显示全部楼层

棒棒的,非常不错~

点赞 回复 举报

aprioy

发帖: 153粉丝: 30

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2019-4-12 22:06:54 6# 显示全部楼层

厉害了,不用下载专门的软件了。

点赞 回复 举报

游客

您需要登录后才可以回帖 登录 | 立即注册