我已经编写了一个bash脚本来禁止路由器中的国家/地区IP块。
为什么以下情况有效:
for ip in $(wget -qO- http://ipdeny.com/ipblocks/data/countries/cn.zone)
do
iptables -I wanin -s "$ip" -j DROP
done
但是我嵌套多个国家的以下内容却没有?
for country in CN AD
do
for ip in $(wget -qO- http://ipdeny.com/ipblocks/data/countries/$country.zone)
do
iptables -I wanin -s "$ip" -j DROP
done
done
答案 0 :(得分:3)
看到它区分大小写。
for country in CN AD;
看到你在这里使用大写字母。如果你使用
for country in cn ad;
然后它应该工作。亲自尝试链接not working upper case zone和working with lower case zone
答案 1 :(得分:1)
由于country
预计为小写,因此您可以像这样添加declare -l country
:
declare -l country
for country in CN AD; do
for ip in $(wget -qO- http://ipdeny.com/ipblocks/data/countries/$country.zone); do
iptables -I wanin -s "$ip" -j DROP
done
done
或使用${var,,}
parameter expansion:
for country in CN AD; do
for ip in $(wget -qO- http://ipdeny.com/ipblocks/data/countries/${country,,}.zone); do
iptables -I wanin -s "$ip" -j DROP
done
done