Что относительно read
в a while
цикл?
some command returning multiple lines | while IFS= read -r line ; do
echo "$line"
done
Будьте осторожны, тем не менее, канал выполняется в подоболочке, что означает, что Вы не можете изменить значения переменных для остальной части сценария. При необходимости в чем-то для выживания от цикла с условием продолжения, можно использовать замену процесса удара:
while IFS= read -r line ; do
let var+=line
done < <(some command returning multiple lines)
echo "$var"
Заменять то конкретное использование правила iptables
необходимо сделать некоторую отладку сначала.
Первая опция заменяет правило немедленно.
1) Посмотрите, какой номер строки и в том, какая ЦЕПОЧКА упомянутая строка помещается. например:
iptables -L -v -n --line-n
2) Найдите строку и замените ее на основе вывода.
iptables -R [CHAIN_NAME] [LINE_NUMBER] -s YYY.YYY.YYY.YYY -m physdev --physdev-in vif3.1 -j ACCEPT
Вторая опция состоит в том, чтобы сохранить правила iptables и изменить файл и импортировать его.
1) Сохраните правила.
iptables-save > my_ipt-$(date +%F).ipt
2) Измените my_ipt-$ (дата + $F) .ipt
3) импортируйте my_ipt-$(date +%F).ipt
iptables-restore < my_ipt-$(date +%F).ipt
Примечание: $(date +%F)
дата, Вы сохранили файл, например: 07.11.2013
Проверьте, как ожидалось ли все
iptables -L -v -n --line-n
Да это возможно: iptables -L CHAIN -n -v --line-numbers
дайте Вам индекс в правилах iptables -S CHAIN INDEX
отобразите правило
Редактирование С-R параметрами ЦЕПНОГО УКАЗАТЕЛЯ.
Exemple: iptables -L Visioconf-OUT -n -v --line-numbers
Chain Visioconf-OUT (1 references)
num pkts bytes target prot opt in out source destination
1 719K 49M LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 prefix "DROP4 Visioconf-OUT "
2 719K 49M DROP all -- * * 0.0.0.0/0 0.0.0.0/0
iptables -S Visioconf-OUT 2
- VISIOCONF-j ОТБРАСЫВАНИЕ
iptables -R Visioconf-OUT 2 -s 1.2.3.4 -j DROP