> Alguém consegue pensar em um script (shell se possível) que execute um
> for (para pegar cada linha), coloque o valor de cada campo em uma
> variável e depois imprima a linha na tela? Seria de grande ajuda.
> Obrigado.
Marcos, tente o seguinte. Crie um arquivo "firewall.sh" com esse
conteúdo:
#!/bin/sh
grep "<rule" | cut -d '"' --output-delimiter='@' -f 2,4,6 | while read i
do
IP=$(echo $i | cut -d '@' -f 1)
PORT=$(echo $i | cut -d '@' -f 2)
PROTO=$(echo $i | cut -d '@' -f 3)
echo -n "iptables -A OUTPUT "
[ -n "$IP" ] && echo -n "-d $IP "
[ -n "$PROTO" ] && echo -n "-p $PROTO "
[ -n "$PORT" ] && echo -n "--dport $PORT "
echo "-j ACCEPT"
done
E depois rode:
$ cat firewall.xml | sh firewall.sh
Cuidado: esse script é totalmente POG ;-)
> Muito bom o código, só tem um defeito: Se mudar a ordem dos parametros
> (colocar o protocolo antes da porta por exemplo) fica errado.
Deve ter mais do que só 1 defeito, mas realmente esse é um deles.
> Esse
> programa tem que ser flexivel por que o arquivo XML pode ser
> preenchido tanto por um programa quanto por um usuário.
Tente escrever um parser XML.
> Alias, duas coisas: O que é POG e qual a licença desse script?
POG:
http://desciclo.pedia.ws/wiki/Programa%C3%A7%C3%A3o_Orientada_a_Gambiarras
O script é de domínio público. Use-o a vontade.