【问题标题】:I have a list of EC2's, and want to loop through the list in bash, does anyone have a way?我有一个 EC2 的列表,并且想在 bash 中遍历该列表,有人有办法吗?
【发布时间】:2022-11-03 03:45:35
【问题描述】:

我正在使用这个命令 "aws ec2 describe-instances --region us-west-2 --filters "Name=instance-state-name,Values=running" --output table --query 'Reservations[].实例[].InstanceId'"。返回我在美国西部 2 运行的所有 ec2 的列表,我想获取此列表中的每个输出,并使用另一个命令循环遍历每个输出,以查看哪些正在使用 ssm。感谢所有回复.

我试过制作一个空数组,但这让我无处可去。

我已经尝试过,使变量 x 成为一个空列表 x=[] 然后运行上述命令以尝试将输出添加到空列表x=aws ec2 describe-instances --region us-west-2 --filters "Name=instance-state-name,Values=running" --output table --query 'Reservations[*].Instances[*].InstanceId'。一般来说,我对 python 更熟悉,但这只是一个快速的 bash 工具。 错误:getNonSSMEC2.sh:第 3 行:ec2:找不到命令

【问题讨论】:

  • 请编辑您的问题以显示您的尝试,并包含有关任何错误或意外行为的详细信息。
  • 试试这个:x=`aws ec2 describe-instances --region us-west-2 --filters "Name=instance-state-name,Values=running" --output table --query`

标签: amazon-web-services amazon-ec2 command-line-interface aws-cli aws-ssm


【解决方案1】:

所以首先 - 当您想将 bash 命令输出捕获为变量时,您需要像这样声明它:x=$(ls) 或 x=`ls`

关于循环:

x=`aws ec2 describe-instances --region us-west-2 --filters "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[*].InstanceId'`
for id in $(echo $x | jq -r ".[0][0]")
do 
  echo $id
done

我假设在循环中你应该使用这个函数来获取 SSM 信息:https://docs.aws.amazon.com/cli/latest/reference/ssm/describe-instance-information.html

顺便说一句,您始终可以使用 describe-instance-information 来获取 ec2 实例列表,而不是使用 ec2 describe-instances

【讨论】:

    猜你喜欢
    • 2021-03-23
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2023-03-06
    • 2021-07-14
    • 2020-06-09
    • 2020-03-25
    相关资源
    最近更新 更多