我正在为 terraform 外部数据提供程序编写以下 bash 脚本
# !/bin/bash
echo {\"ip\":\"`nslookup nlb-private-1-6ec90b26d1c9e906.elb.ap-south-1.amazonaws.com | awk '/^Address: / { print $0 }'`\"}
我得到的输出为
ssh_ip_address = "10.20.207.250 10.20.223.249 10.20.191.249"
我想将此输出分解为带逗号的列表,因为我想将每个 IP 称为不同的输出,以便在 terraform 脚本中作为输入调用。
如果有人可以提供帮助,那就太好了
我假设您希望 JSON 作为输出,IP 地址作为顶级
ip
键的值。根据你最终想要的,你可以使用
...它使用删除IP地址
sed
,然后将它们读入JSON列表中jq
。这会给你或者用逗号加入这些 IP 地址,
...这会给你
您可以将
nslookup
and替换sed
为生成一组 IP 地址行的任何命令或管道。例如,您可能希望使用 roaima 在其答案中显示的单个命令:dig
在和的帮助下jo
:当我运行你的代码时,我没有得到任何类似你的输出,所以我重新开始了。这是一个使用
dig
代替的解决方案nslookup
(并分成两行以获得额外的可读性)输出
刚刚发现您一直都需要 JSON,这里有一个相同命令的修改版本,可以做到这一点
输出
我提出这个解决方案:
使用
getent
而不是nslookup
或的解决方案dig
。