shell-script-pt
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]