[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Variáveis dentro de uma variável
From: |
Luis Fernando C. Talora |
Subject: |
Variáveis dentro de uma variável |
Date: |
Tue, 06 Sep 2005 16:39:56 -0000 |
User-agent: |
eGroups-EW/0.82 |
Pessoal,
Estou montando um script de firewall visando facilitar a
criação/modificação/exclusão de regras por parte do pessoal
menos experiente da equipe em que trabalho. Criei um script
inicial, para teste, que abre 3 arquivos de dados:
services.conf (relação de serviços), hosts.conf (estações e
servidores) e groups.conf (grupos de estações e/ou
servidores). Esse arquivos, na verdade, contém declarações
de variáveis. Segue um exemplo da sintaxe dos arquivos
abaixo:
----- services.conf
FTP="20,21"
--------------------
----- hosts.conf
fulano="192.168.0.100"
beltrano="192.168.0.101"
ciclano="192.168.0.102"
--------------------
----- groups.conf
Usuarios_Liberados="$fulano $beltrano"
Usuarios_FTP="$fulano $beltrano $ciclano"
--------------------
O script de teste busca as regras em um arquivo chamado lan-wan.rules,
que obedece a sintaxe abaixo:
<origem>:<destino>:<porta destino>:<ação(ACCEPT/DROP/REJECT)>
Ex.:
$Usuarios_Liberados:$WANY::ACCEPT
$Usuarios_FTP:$WANY:$FTP:ACCEPT
O lance é que, no meu script, eu tô lendo o arquivo de regras
assim:
----- teste.sh
#!/bin/bash
FWHOME="/etc/firewall"
IPT="/sbin/iptables"
source $FWHOME/hosts.conf
source $FWHOME/groups.conf
source $FWHOME/services.conf
LANY="10.0.0.0/24"
DANY="192.168.0.64/26"
WANY="0/0"
# Leitura
IFS=:
while read SRC DST DPORT ACT; do
echo -e "$SRC" "$DST" "$DPORT" "$ACT"
if [ ! -z $DPORT ] ; then
CMD="-m multiport --dports $DPORT"
fi
CMD="$CMD -j $ACT"
SRC=${SRC:-$LANY}
DST=${DST:-$WANY}
for SOURCE in $SRC ; do
for DEST in $DST ; do
# Testando pra ver como a regra ia sair:
echo "$IPT -A FORWARD -s $SOURCE -d $DEST $CMD"
done
done
echo "-----------------------------"
done < $FWHOME/lan-wan.rules
--------------------
Finalmente: meu problema é que, com a sintaxe acima, a regra para
"Acesso_Liberado" sai assim:
/sbin/iptables -A FORWARD -s $Usuarios_Liberados -d 0/0 -j ACCEPT
quando o resultado desejado seria:
/sbin/iptables -A FORWARD -s $fulano -d 0/0 -j ACCEPT
/sbin/iptables -A FORWARD -s $beltrano -d 0/0 -j ACCEPT
Em outras palavras, eu queria o conteúdo de cada variável
contida na váriável $SRC. Alguém pode me dar uma ajuda com
isso (ou me dar uma dica de como construir isso de outra
maneira)?
Obrigado e desculpem pelo tamanho da mensagem.
[]´s
Talora
- Variáveis dentro de uma variável,
Luis Fernando C. Talora <=