Skip to content

The Qcloud CLI is an open source tool built on top of the Qcloud API that provides commands for interacting with Qcloud services.

License

Notifications You must be signed in to change notification settings

QcloudApi/qcloudcli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

腾讯云命令行工具

pypi version Build Status

For English users, pelase refer to document README.rst

腾讯云命令行工具 qcloudcli 基于腾讯云 API 开发。能够调用部分域名在 api.qcloud.com 下的接口。

qcloudcli 支持 Python 2.7.x 到 3.6.x 版本环境。

由于 API 进行了一次大的升级至 3.0 ,新版 API 的命令行工具由 tccli 代替,详细介绍请参考官网文档

安装

推荐使用 pip 安装:

$ pip install --user qcloudcli

--user 选项会将 qcloudcli 只安装到当前用户环境中,这意味着不需要 sudo 权限。 注意:如果是在 virtualenv 环境下,--user 选项是不支持的。

查看版本号

$ qcloudcli --version

升级

$ pip install --user --upgrade qcloudcli

卸载

$ pip uninstall --yes qcloudcli

命令补全

qcloudcli 为 bash 环境提供了命令补全功能,但是不是默认开启的。开启的方式:

$ complete -C qcloud_completer qcloudcli

将该命令加入 ~/.bashrc 以默认开启。

使用指南

配置系统参数

qcloudcli 需要提供账号信息才能访问腾讯云各服务。登录腾讯云控制台,进入API密钥管理页面查看密钥,如果没有则需要新建密钥。SecretId 相当于账号,SecretKey 相当于密码,为保护你的资产,请不要将 SecretKey 透露给其他人。

执行如下命令,根据提示配置 qcloudcli :

$ qcloudcli configure
Qcloud API SecretId [None]: foo
Qcloud API SecretKey [None]: bar
Region Id(gz,hk,ca,sh,shjr,bj,sg) [None]: gz
Output Format(json,table,text) [None]: json

这些信息会放在当前用户的根路径下,例如 Linux 操作系统位于 ~/.qcloudcli/configure~/.qcloudcli/credentials 两个文件中。

~/.qcloudcli/configure 内容示例如下:

[default]
output = json
region = gz

~/.qcloudcli/credentials 内容示例如下:

[default]
qcloud_secretkey = bar
qcloud_secretid = for

注意:这些信息是明文存储的,依赖于用户家目录下正确的文件权限设置控制访问。例如:

$ ls -l ~/.qcloudcli/
total 8
4 -rw-rw-r-- 1 john john 36 Nov 29 23:35 configure
4 -rw------- 1 john john 55 Nov 29 23:35 credentials

注意:当前版本中,当卸载 qcloudcli 时,这两个文件并不会自动删除,你需要手动将其删除掉。

获取帮助信息

运行命令,获取qcloudcli的功能列表,其中包含qcloudcli的configure命令,和所有支持的服务模块:

$ qcloudcli help

运行命令,获取特定的服务模块的帮助信息,例如获取cvm模块的帮助信息,其中包含了cvm模块下的接口列表:

$ qcloudcli cvm help

运行命令,获取特定模块下特定接口的帮助信息,例如获取查询虚拟机列表DescribeInstances接口的帮助信息,其中包含了接口的参数列表:

$ qcloudcli cvm DescribeInstances help

使用复杂结构体的参数

对于基本数据类型的参数,例如字符串、数字,可以直接输入。

例如,查询虚拟机列表,使用默认的API版本,指定参数limit=10,只返回10个虚拟机,则直接输入:

$ qcloudcli cvm DescribeInstances --limit 10

对于复杂的结构体,例如列表,字典等类型,需要输入json格式的字符串。

例如,查询虚拟机列表,使用默认的API版本,指定instanceIds参数,只返回id为qcvmf4b542ad7b4cd49f2db57a733368d5b1和id为qcvmaf636dd06a816765b4f2c51595f2d84d的两台虚拟机,需要输入:

$ qcloudcli cvm DescribeInstances --instanceIds '["qcvmf4b542ad7b4cd49f2db57a733368d5b1", "qcvmaf636dd06a816765b4f2c51595f2d84d"]'

例如,查询虚拟机列表,使用2017-03-12 API版本,指定Filters参数,返回部署在zone为ap-guangzhou-2的虚拟机,需要输入:

$ qcloudcli cvm DescribeInstances --Filters '[{"Name":"zone","Values":["ap-guangzhou-2"]}]'

例如,创建虚拟机,使用 2017-03-12 API 版本,各项参数不再详解:

$ qcloudcli cvm RunInstances --Placement '{"Zone":"ap-beijing-3"}' --InstanceChargeType PREPAID --InstanceChargePrepaid '{"Period":1,"RenewFlag":"NOTIFY_AND_AUTO_RENEW"}' --ImageId img-dkwyg6sr --InstanceType S2.SMALL1 --SystemDisk '{"DiskType":"CLOUD_BASIC","DiskSize":50}' --InternetAccessible '{"InternetChargeType":"TRAFFIC_POSTPAID_BY_HOUR","InternetMaxBandwidthOut":2,"PublicIpAssigned":"TRUE"}' --InstanceName prod-jumpserver-01 --EnhancedService '{"SecurityService":{"Enabled":"TRUE"},"MonitorService":{"Enabled":"TRUE"}}' --InstanceCount 1 --VirtualPrivateCloud '{"VpcId":"vpc-njkwg482","SubnetId":"subnet-6rs8ienn"}'

注意,这里由于 Placement 字段里指定了 Zone 是北京三区,因此在配置文件中的 region 需要指定为 bj。如果不想修改配置文件,可以在命令中指定 --RegionId ap-beijing 来覆盖配置。

过滤返回字段

我们使用jmespath做json路径解析。

对于返回比较复杂的情况,可以使用--filter参数指定返回部分内容。

注意使用前你必须清楚返回的数据的具体结构才能正确引用。

例如查看安全组列表,只获取安全组id列表,由于每个安全组元素是在data字段表示的列表里,如果用具体的下标,则只返回对应的元素,用*表示返回所有:

$ qcloudcli dfw DescribeSecurityGroups --filter data[*].sgId
[
    "sg-icy671l9",
    "sg-o9rfv42p",
    "sg-pknfyaar",
    "sg-2rjokpt7",
    "sg-4ehjaoh3"
]

例如使用CVM API 2017-03-12版本,查看虚拟机,只获取安全组列表字段,这里由于只指定了一台虚拟机,InstanceSet下的第0个元素必定是该虚拟机,则可以如下表示:

$ qcloudcli cvm DescribeInstances --InstanceIds '["ins-od1laqxs"]' --filter Response.InstanceSet[0].SecurityGroupIds
[
    "sg-4ehjaoh3"
]

指定API版本

注意:该功能自 1.9.0 版本加入。

打开配置文件~/.qcloudcli/configure,在对应的profile下增加如下内容

api_versions =
    cvm = 2017-03-12

即指定了使用的cvm API版本为2017-03-12

如果指定的版本不存在,则运行任意cvm相关命令后会报错并提示可用版本。 如无任何可用版本,则不需要设置相关信息,请在配置文件中删除该行。 如果没有指定任何版本,即配置项为空,则CLI会使用默认版本。

使用代理

注意:该功能自 1.8.9 版本加入。

如果是在代理环境下使用qcloudcli,且*.api.qlcoud.com域名不在代理的白名单列表中,则需要配置HTTPS代理才能正常使用。 目前仅支持不含账户信息的全局代理,仅在Linux和Windows系统上测试过。

在Linux操作系统BASH环境下,使用export https_proxy=YourProxyRealHost:YourProxyRealPort设置环境变量后即可。 注意,将示例中的YourProxyRealHost和YourProxyRealPort替换为代理的实际值。 你还可以将该行放在BASH配置文件~/.bashrc中,以避免每次新开终端都要配置一遍。

在Windows操作系统下,使用set https_proxy=YourProxyRealHost:YourProxyRealPort设置环境变量后即可。 注意,将示例中的YourProxyRealHost和YourProxyRealPort替换为代理的实际值。 你还可以在“计算机-属性-高级系统设置-环境变量-系统变量”中设置该值,以避免每次新开终端都要配置一遍。

About

The Qcloud CLI is an open source tool built on top of the Qcloud API that provides commands for interacting with Qcloud services.

Resources

License

Stars

Watchers

Forks

Packages

No packages published