Я пытаюсь использовать переменную вместо явного перечисления моего списка зон в нескольких местах.
Я понимаю, что могу просто скачать все файлы и просто применить те, которые я ищу,Я чувствую, что я должен быть в состоянии сделать это, и я думаю, что это делает это немного академическим упражнением.Возможно, моя терминология отключена, но большинство поисков, которые я провел, показывали результаты, основанные на целых числах.Код ниже работает как есть ... но я бы хотел поменять {ru,cn...}
с переменной $zone_list
.Это так же легко может быть расширение или тип файла {jpg,php,htm,html}
... я не здесь, или мне стоит подумать об этом по-другому ??
#!/bin/bash
ipset=/sbin/ipset
## zone_list="ru,cn,in,hk"
## zone_list="{ru,cn,in,hk}"
## wget -N http://www.ipdeny.com/ipblocks/data/countries/{$zone_list}.zone -P ~/testing/iptables/blacklists/zones/
wget -N http://www.ipdeny.com/ipblocks/data/countries/{ru,cn,in,hk}.zone -P ~/testing/iptables/blacklists/zones/
## $ipset -F
## $ipset -N -! blacklist hash:net maxelem 262144
for ip in $(cat ~/testing/iptables/blacklists/zones/{ru,cn,in,hk}.zone); do
## $ipset -A blacklist $ip
echo $ip
done
Редактировать: Обновлен скрипт с ответом отДзенны ниже
#!/bin/bash
ipset=/sbin/ipset
zone_list="{ru,cn,in,hk}"
eval "urls=(http://www.ipdeny.com/ipblocks/data/countries/${zone_list}.zone)"
wget -N "${urls[@]}" -P /srv/iptables-data/blacklists/zones/
## BLACKZONE RULE (select country to block and ip/range)
## $ipset -F
## $ipset -N -! blacklist hash:net maxelem 262144
eval "zonefiles=(/srv/iptables-data/blacklists/zones/${zone_list}.zone)"
for ip in $(cat "${zonefiles[@]}"); do
## $ipset -A blacklist $ip
echo $ip
done