问题描述
想要通过AWS CLI在远程的EC2实例上运行脚本或命令。根据一篇2015年的EC2 Run Command新闻文章,AWS CLI应该支持一个新的子命令来在远程的EC2实例上执行脚本。然而,用户在aws ec2 help
中查找时,并未找到相关命令。他已经通过apt-get
安装了aws
。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
要在AWS Systems Manager Run Command中运行ipconfig命令,可以执行以下步骤:
- 使用AWS CLI发送命令:
aws ssm send-command --document-name "AWS-RunPowerShellScript" --instance-ids "<您的实例ID>" --parameters commands=ipconfig
这将在远程EC2实例上执行ipconfig命令。如果您遇到错误,请考虑指定正确的--region
。
确保您的EC2实例具有适当的IAM角色并安装了SSM Agent。您可以在使用AWS CLI进行Systems Manager Run Command演练中找到更多信息。
如果需要执行更复杂的操作,可以使用以下Shell脚本示例:
#!/bin/bash
# 替换为您的实例ID
instanceId="<您的实例ID>"
# 发送命令并获取命令ID
cmdid=$(aws ssm send-command --instance-ids "$instanceId" --document-name "AWS-RunPowerShellScript" --parameters commands=ipconfig --query "Command.CommandId" --output text)
# 等待命令完成
while [ "$(aws ssm list-command-invocations --command-id "$cmdid" --query "CommandInvocations[].Status" --output text)" == "InProgress" ]; do
sleep 1
done
# 获取命令输出
aws ssm list-command-invocations --command-id "$cmdid" --details --query "CommandInvocations[*].CommandPlugins[*].Output[]" --output text
将上述脚本保存为run_ipconfig.sh
并赋予执行权限:chmod +x run_ipconfig.sh
。然后可以使用以下命令运行ipconfig:
./run_ipconfig.sh
这将在指定的EC2实例上运行ipconfig命令并显示输出。
以上是在AWS CLI中运行脚本或命令的解决方案。根据您的需求和环境,您可以选择不同的方法来执行远程命令。
如果需要执行更复杂的操作,您还可以考虑使用AWS Systems Manager的其他功能,如会话管理,以便与远程实例进行交互。
总结
通过AWS CLI在远程EC2实例上运行脚本或命令可以通过AWS Systems Manager Run Command来实现。使用aws ssm send-command
命令可以发送命令并在实例上执行特定操作。确保您的实例具有适当的IAM角色和安装了SSM Agent。如果需要执行更复杂的操作,您可以使用Shell脚本来处理命令发送和输出获取的过程。使用这些方法,您可以方便地在远程实例上执行各种操作,提高管理效率。
以上解决方案可能涉及到AWS服务的具体操作,具体细节可能随时间有所变化,建议根据最新的文档进行操作。