我想从命令ec2-describe-instances的结果中提取实例ID和标签,并希望将结果存储在文本文件中。结果集给出:
但是我想要标记所有者和cost.centre 请指导我如何做到这一点
答案 0 :(得分:1)
如果我正确理解了这个问题,我认为你只需要在你的第二个grep中添加表达式:
ec2-describe-instances | grep -i "tag" | grep -i -e "name" -e "owner" -e "cost.centre"
答案 1 :(得分:1)
在shell脚本中执行此操作会不必要地复杂化。以下是一些建议:
ec2cli
。不要使用它。请改用AWS-CLI
。因为解析ec2cli
中的输出很痛苦。 AWS-CLI
提供JSON
中的输出,而解析更容易。此外,AWS此后才支持AWS-CLI
。AWs-CLI
命令,然后以散列形式捕获输出。 Perl
对于处理此类数据结构非常有用。最重要的是,您需要在哈希中捕获标记,以使您的生活更轻松。当你有多个标签时,Ans变得越来越突出。
答案 2 :(得分:1)
使用awk
ec2-describe-instances |awk 'BEGIN{IGNORECASE=1}/(name|owner|cost.center)/&&/tag/'
TAG instance i-c4 Name Rii_Win_SAML
TAG instance i-c42 Owner Rii Pandey
答案 3 :(得分:1)
这将有助于找到instance-id
$ aws ec2 describe-instances --filters Name = vpc-id,Values = vpc-xxx | awk'{print $ 8}'| sort -n | grep“i-”
的i-4115d38c
的i-5d534697
的i-6e679a45
的i-7a659851
的i-8d6bae40
的i-cd6f9000
的i-d264ad1e
的i-d5888618
的i-e2332e2e
ps考虑到你已经配置/运行“aws configure”
答案 4 :(得分:1)
这是另一种不使用jq和其他解析工具的方法。
ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,Tags[?Key==`Name`].Value | [0],Tags[?Key==`cost.centre`].Value | [0]]' --output text
答案 5 :(得分:0)
这应该有效:
aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(contains({Tags: [{Key: "owner"},{Key: "costcenter"}]}))|"Instance ID: \(.InstanceId) Owner: \(.Tags[]|select(.Key=="owner")|.Value), Cost Center: \(.Tags[]|select(.Key=="costcenter")|.Value)"'
TL; DR:AWS标记的方式是一个活生生的噩梦,即使jq
此外,请使用AWS CLI,而不是旧的不受支持的工具。