公共命令是由阿里云提供给所有用户使用的云助手命令,适用于软件的安装或卸载、实例状态诊断、密钥轮转等场景。本文为您介绍如何查看和执行云助手公共命令。
背景信息
公共命令是阿里云创建的云助手命令,对所有阿里云用户可见。通常包含一些比较复杂的服务器配置、健康或安全检测、应用安装、文件处理、系统补丁安装、更改系统配置、服务或应用管理的脚本,以及云助手插件(包含脚本或可执行程序)。
相比较普通命令,公共命令的内容、发布以及升级会由阿里云统一负责维护。公共命令发布后,您可以直接查看命令的详细内容,并可以在ECS实例上执行命令及查看执行进度和结果,例如,一键升级Linux实例中的云助手客户端、一键安装Java、一键诊断Linux实例是否需要进行磁盘扩容操作等等。使用公共命令,可以快速地完成某些复杂配置,很大程度提升您的操作和运维效率。
本文以公共命令ACS-ECS-DiskResize-Diagnostic-for-linux.sh
为例,该公共命令用来诊断Linux实例是否需要进行磁盘扩容操作。
操作方式
方式 |
说明 |
ECS管理控制台方式 |
通过阿里云控制台使用云助手公共命令。 |
OpenAPI方式 |
通过调用API DescribeCommands查看公共命令,调用API InvokeCommand执行公共命令。 |
CLI方式 |
通过阿里云CLI调用API DescribeCommands查看公共命令、调用API InvokeCommand执行公共命令。 |
ECS管理控制台方式
- 登录ECS管理控制台。
- 在左侧导航栏,选择。
- 在顶部菜单栏左上角处,选择地域。
- 在ECS云助手页面,单击公共命令页签。
- 找到待执行的目标云助手公共命令,在右侧对应操作列下,单击执行。
说明 公共命令首页仅展示最新版本的公共命令,若需要查看或执行历史版本公共命令,请找到对应的公共命令并单击命令ID进入命令详情页操作。
- 在执行命令面板中,配置相关参数并单击执行。
主要配置参数如下所示:
说明 执行公共命令所需配置参数的更多信息,请参见
控制台操作。
区域 |
参数名称 |
描述 |
命令信息 |
命令内容 |
单击查看命令内容确认命令内容。
|
执行计划 |
选择公共命令的执行计划,选择项如下所示:
- 立即执行
- 系统下一次启动后
- 系统每次启动后
- 定时执行
关于执行计划的更多信息,请参见执行计划详细信息。
|
执行用户 |
在ECS实例中执行命令的用户名称,例如root。
默认情况下,在Linux实例中以root用户执行命令,在Windows实例中以System用户执行命令。
|
命令参数 |
如果页面出现命令参数项,请您在对应文本框中输入自定义参数值,具体以实际面板显示为准。
说明 若公共命令提供方提供了参数描述、默认值或可选值,请按照提示填写。若参数为必填项,您需要输入具体参数值才可以执行。
|
选择实例 |
- |
选择一台或多台需要执行命令的实例,该实例需处于运行中状态且已安装云助手的客户端。 |
选择托管实例 |
- |
选择要执行命令的托管实例,托管实例需处于连接状态且已安装云助手的客户端。
|
- 在命令执行结果页签下,找到已执行成功的公共命令,单击对应操作列下的查看。
在执行详情页面,实例的执行状态为
执行成功时,可查看公共命令的执行输出结果。
OpenAPI方式
- 通过OpenAPI查看公共命令。
您可以通过调用API
DescribeCommands接口查看公共命令,还可以直接使用公共命令名称进行查询。
本方式以查看杭州地域的公共命令ACS-ECS-DiskResize-Diagnostic-for-linux.sh
为例,示例代码如下所示:
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.ecs.model.v20140526.*;
public class DescribeCommands {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
DescribeCommandsRequest request = new DescribeCommandsRequest();
request.setRegionId("cn-hangzhou");
request.setName("ACS-ECS-DiskResize-Diagnostic-for-linux.sh");
try {
DescribeCommandsResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
以查看公共命令ACS-ECS-DiskResize-Diagnostic-for-linux.sh
的执行结果为例,返回的部分示例如下所示:
{
"TotalCount": 1,
"PageSize": 10,
"RequestId": "2C23A5BA-66CF-5B70-BB1C-524AD75D****",
"PageNumber": 1,
"Commands": {
"Command": [
{
"Description": "诊断Linux实例是否需要进行磁盘扩容操作",
"Category": "阿里云-云服务器-管控诊断系统\t",
"ParameterNames": {
"ParameterName": []
},
"ParameterDefinitions": {
"ParameterDefinition": []
},
"Timeout": 60,
"Provider": "AlibabaCloud.ECS.Diagnosis",
"Name": "ACS-ECS-DiskResize-Diagnostic-for-linux.sh",
"WorkingDir": "",
"CommandContent": "IyEvYmluL2Jhc2gKIyBQcm92aWRlZCBieSBBbGliYWJhIENsb3VkIEVDUyBEaWFnbm9zdGljIFNlcnZpY2UKIyBSZXR1cm46IHRydWU6IFlvdSBuZWVkIHRvIGV4ZWN1dGUgc29tZSBjb21tYW5kIHRvIHJlc2l6ZSB5b3VyIGRpc2ssIHBsZWFzZSByZWZlciBodHRwczovL2hlbHAuYWxpeXVuLmNvbS9kb2N1bWVudF9kZXRhaWwvMTEzMzE2Lmh0bWwuCiMgZmFsc2U6IE5vdGluZyB5b3UgbmVlZCB0byBkby4KIyBWZXJzaW9uOiAxLjAKCnJlYWxEaXNrU2l6ZT1gZmRpc2sgLWx1IHwgZ3JlcCAnRGlzayAvZGV2JyB8IGF3ayAne3ByaW50ICQzfScgfCBhd2sgJ3t4Kz0kMX1FTkR7cHJpbnQgeH0nYAoKZWZmZWN0aXZlRGlza1NpemU9YGRmIC1oIHwgYXdrICd7TkY9Mn0xJyB8IGdyZXAgJy9kZXYvJyB8IGF3ayAne3ByaW50ICQyfScgfCBncmVwIC1vICdbWzpkaWdpdDpdXVwrJyB8IGF3ayAne3grPSQxfUVORHtwcmludCB4fSdgCgpzdWJzdHJhY3Rpb249YGVjaG8gIiRyZWFsRGlza1NpemUgLSAkZWZmZWN0aXZlRGlza1NpemUiIHwgYmNgCgpzdWJzdHJhY3Rpb25QZXJjZW50PWBlY2hvICJzY2FsZT00OyAkc3Vic3RyYWN0aW9uIC8gJHJlYWxEaXNrU2l6ZSIgfCBiY2AKCmlmIFsgYGVjaG8gIiRzdWJzdHJhY3Rpb25QZXJjZW50PjAuMiIgfCBiY2AgLWVxIDEgXQp0aGVuCgllY2hvICJ0cnVlIgplbHNlCgllY2hvICJmYWxzZSIKZmk=",
"Type": "RunShellScript",
"Version": 1,
"InvokeTimes": 265,
"CreationTime": "2022-04-22T02:34Z",
"Latest": true,
"EnableParameter": false,
"CommandId": "c-hz02hthgomejtvk"
}
]
}
}
- 通过OpenAPI执行公共命令。
根据上述步骤1返回的
CommandId
参数值,您可以通过调用API
InvokeCommand执行云助手公共命令,还可以直接使用命令名称执行公共命令,公共命令的命令名称在不同地域是相同的。
本方式以执行杭州地域的公共命令ACS-ECS-DiskResize-Diagnostic-for-linux.sh
为例,介绍执行云助手公共命令的方法。示例代码如下所示:
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.ecs.model.v20140526.*;
public class InvokeCommand {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
IAcsClient client = new DefaultAcsClient(profile);
InvokeCommandRequest request = new InvokeCommandRequest();
request.setCommandId("ACS-ECS-DiskResize-Diagnostic-for-linux.sh"); //输入公共命名的名称。
request.setRegionId("cn-hangzhou"); //地域ID以cn-hangzhou为例。
List<String> instanceIdList = new ArrayList<String>();
instanceIdList.add("i-bp1czdx85x4yivyq****");
request.setInstanceIds(instanceIdList);
try {
InvokeCommandResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
调用成功后,会获取一个返回参数
InvokeId
,即公共命令的执行ID,返回示例如下所示:
{
"RequestId": "D0630B5E5-CF9D-5B9F-9AE8-8C3566D1****",
"InvokeId": "t-hz02kwqc9pg****"
}
您可以在公共命令执行详情页的输出结果中,查看Linux实例是否需要进行磁盘扩容操作的详细说明。
CLI方式
- 通过CLI查看公共命令。
您可以通过
DescribeCommands接口查看公共命令。
当Provider
参数为AlibabaCloud
时,表示查询由阿里云提供的所有公共命令。本方式以查询杭州地域的公共命令ACS-ECS-DiskResize-Diagnostic-for-linux.sh
为例,该公共命令用来诊断Linux实例是否需要进行磁盘扩容操作。示例如下所示:
aliyun ecs DescribeCommands --region cn-hangzhou --RegionId cn-hangzhou --CommandId ACS-ECS-DiskResize-Diagnostic-for-linux.sh
- 可选检查ECS实例的状态。
- 查询目标ECS实例是否安装了云助手客户端。
调用DescribeCloudAssistantStatus接口查询实例是否安装了云助手客户端,更多信息,请参见
DescribeCloudAssistantStatus。
查询实例ID为i-bp1f4f6o8lv0wqof****
的实例是否安装云助手,示例如下所示:
aliyun ecs DescribeCloudAssistantStatus --RegionId 'cn-hangzhou' \
--InstanceId.1 'i-bp1f4f6o8lv0wqof****'
- 如果返回参数
CloudAssistantStatus
为true
时,表示目标实例已安装云助手客户端。
- 如果返回参数
CloudAssistantStatus
为false
时,表示目标实例未安装云助手客户端。请您调用InstallCloudAssistant接口为实例安装客户端。更多信息,请参见InstallCloudAssistant。
- 通过CLI执行公共命令。
调用InvokeCommand接口为一台或多台ECS实例执行云助手公共命令。更多信息,请参见
InvokeCommand。
以公共命令ACS-ECS-DiskResize-Diagnostic-for-linux.sh
为例,该公共命令用来诊断Linux实例是否需要进行磁盘扩容操作。示例如下所示:
aliyun ecs InvokeCommand --RegionId 'cn-hangzhou' \
--InstanceId.1 'i-bp1f4f6o8lv0wqof****' \
--InstanceId.2 'i-bp137qu6142s3mhm****' \
--CommandId 'ACS-ECS-DiskResize-Diagnostic-for-linux.sh' \
--Timed 'false'
调用成功后,会获取一个返回参数
InvokeId
(例如
t-7d2a745b412b4601b2d47f6a768d****
),即公共命令的执行ID。您可以调用DescribeInvocations或DescribeInvocationResults接口查询云助手命令执行结果。更多信息,请参见
DescribeInvocations或
DescribeInvocationResults。
您可以在公共命令执行详情页的输出结果中,查看Linux实例是否需要进行磁盘扩容操作的详细说明。