スクリプトを書いていますが、詰まっています。
私はURLを持っています(https://file.test.com/tips)には、ネットワークサブネットのリストを含むファイルが含まれています。
文書の内容:
{192.168.1.0/24,10.0.0.0/24,2001:aaaa:bbbb:cccc::/64}
私が走ろうとしたとき
# firewall-cmd --permanent --zone=trusted --add-source="$(curl https://file.test.com/tips)"
わかりました。
Error: INVALID_ADDR: Zone 'trusted': invalid source '{192.168.1.0/24,10.0.0.0/24,2001:aaaa:bbbb:cccc::/64}'
走るとうまくいきます。
# firewall-cmd --permanent --zone=trusted --add-source={192.168.1.0/24,10.0.0.0/24,2001:aaaa:bbbb:cccc::/64}
私が間違っていることを知っている人はいますか?
ベストアンサー1
以前はコメントしましたが、これはbash拡張の問題に近いです。したがって、正しい方法はループを使用し、サブネットを次のように分割することです。,
#!/usr/bin/env bash
read_file=$(curl -s https://file.test.com/tips | sed 's/[{}]//g')
saveIFS=$IFS
IFS=',' read -ra subnets <<< "$read_file"
for subnet in "${subnets[@]}"
do
firewall-cmd --zone=trusted --add-source="$subnet" --permanent
done
firewall-cmd --reload
IFS=$saveIFS
eval
または別のオプションはprintf '%q' "${subnet}"
eval
お勧めできませんが、欲しいものにはかなり安全です。
eval firewall-cmd --permanent --zone=trusted --add-source="$(curl -s https://file.test.com/tips)" && firewall-cmd --reload