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"
Terraformスクリプトで入力を呼び出すために各IPを別の出力に呼び出そうとしているので、この出力をコンマ付きのリストに分割したいと思います。
誰かが助けることができれば良いでしょう。
ベストアンサー1
ip
IPアドレスを最上位キー値としてJSONを出力として使用したいとします。
最終的に欲しいものに合わせて使えます。
nslookup nlb-private-1-6ec90b26d1c9e906.elb.ap-south-1.amazonaws.com |
sed -n 's/^Address: //p' |
jq -Rs '{ ip: ( rtrimstr("\n") | split("\n") ) }'
...IPアドレスを削除しsed
てから、.readを使用してそれをJSONリストに読み込みますjq
。これはあなたに与えるでしょう
{
"ip": [
"10.20.223.249",
"10.20.191.249",
"10.20.207.250"
]
}
または、IPアドレスをカンマで接続します。
nslookup nlb-private-1-6ec90b26d1c9e906.elb.ap-south-1.amazonaws.com |
sed -n 's/^Address: //p' |
jq -Rs '{ ip: ( rtrimstr("\n") | split("\n") | join(",") ) }'
...あなたに与えるでしょう
{
"ip": "10.20.207.250,10.20.223.249,10.20.191.249"
}
nslookup
およびsed
IPアドレス行セットを生成するコマンドまたはパイプで置き換えることができます。たとえば、roaimaが表示する単一のコマンドを使用できます。彼らの答え:
dig +short nlb-private-1-6ec90b26d1c9e906.elb.ap-south-1.amazonaws.com
dig
との助けを借りてjo
:
$ dig +short nlb-private-1-6ec90b26d1c9e906.elb.ap-south-1.amazonaws.com | jo -a | jo ip=:-
{"ip":["10.20.223.249","10.20.207.250","10.20.191.249"]}