Exemplo de laço (loop) para execução de um script de firewall

Neste artigo vou dar uma dica pra não “inchar” muito seu script de firewall, e se você se interessou em ler todo o título do tópico já deve fazer idéia do que estou falando.

No caso abaixo, a necessidade foi liberar o acesso do msn através de mac de alguns computadores no qual os mesmos devem ser cadastrados no arquivo indicado pela variável MACLIST seguindo o “layout” abaixo:

mac,identificacao-de-acordo-com-sua-necessidade

Certifique-se de criar o arquivo, e abaixo estou mostrando um conteúdo de exemplo:

geowany@gateway:~# cat /etc/firewall/msn_maclist

00:11:22:33:44:55,pc-chiquinho

BA:CC:DD:EE:11:00,pc-zezinho

E no script deve ficar da seguinte forma:

MACLIST="/caminho/para/sua/lista" for i in `cat $MACLIST`;do  MAC=`echo $i|cut -d ',' -f1`  USER=`echo $i|cut -d ',' -f2`  echo "Liberando acesso msn para '$USER'..."  iptables -A FORWARD -m mac --mac-source $MAC -p tcp --dport 1863 -j ACCEPT done iptables -A FORWARD -s $NET1 -p tcp --dport 1863 -j REJECT

Na primeira linha está definindo a variável que indica onde está o arquivo de lista se encontra.

Na segunda, está o início do laço (se quiser saber mais, pesquise pelo comando “for” em alguma documentação de “shell script” ) que seria algo assim para “i” em conteúdo do arquivo de lista; faça (aí começa a terceira linha).

Na terceira linha está o mac que ele vai “tirar de cada linha” (pesquise sobre o comando cut para saber os mínimos detalhes).

Na quarta linha está aquela identificação que não precisa seguir regra nenhuma, faça a gosto.

Na quinta linha está uma “saída para a tela”, ou seja, quando o script for executado vai aparecer algo tipo: “Liberando acesso a msn para chiquinho”.

Na sexta linha está o que mais interessa que é liberar a porta do msn pelo mac. Na sétima está o “done”, que nada mais é do que o fim do laço.

Resumindo, esse laço pega cada linha do arquivo e executa um comando por cada linha.Espero que gostem!

Geowany Galdino escreveu 44 artigos

Assistente em Tecnologia da Informação na Universidade Federal do Acre. Licenciado em História na mesma instituição.

Deixe um comentário

Seu endereço de email não será publicado. Os campos com * são obrigatórios

Você pode usar estes tags e atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>