我想使用 Bash 列出我的 EC2 实例的公共 IP 地址,并用分隔符(空格或换行符)分隔。
我尝试将输出通过管道传输到jq,aws ec2 describe-instances | jq
但似乎无法仅隔离 IP 地址。
这可以通过aws
单独、指定参数jq
或完全其他方式来完成吗?
我想使用 Bash 列出我的 EC2 实例的公共 IP 地址,并用分隔符(空格或换行符)分隔。
我尝试将输出通过管道传输到jq,aws ec2 describe-instances | jq
但似乎无法仅隔离 IP 地址。
这可以通过aws
单独、指定参数jq
或完全其他方式来完成吗?
直接来自aws cli:
aws ec2 describe-instances \
--query "Reservations[*].Instances[*].PublicIpAddress" \
--output=text
aws ec2 describe-instances \
--filter "Name=instance-state-name,Values=running" \
--query "Reservations[*].Instances[*].[PublicIpAddress, Tags[?Key=='Name'].Value|[0]]" \
--output text
以下命令将列出所有正在运行的 EC2 实例的 IP 地址
aws ec2 describe-instances | grep PublicIpAddress | grep -o -P "\d+\.\d+\.\d+\.\d+" | grep -v '^10\.'
希望能解答您的疑问...
但这在没有关于访问的所有错误的情况下有效:
wget -qO- http://instance-data/latest/meta-data/public-ipv4/|grep .
您可以使用实例元数据,以便从 ec2 实例运行以下命令:
curl http://169.254.169.254/latest/meta-data/public-ipv4
它将为您提供实例的公共 IP。如果你想要私有IP,你将运行
curl http://169.254.169.254/latest/meta-data/local-ipv4
aws ec2 describe-instances --query "Reservations[].Instances[][PublicIpAddress]"
参考: http ://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html