Senhores, bom dia.

Estou otimizando um script de firewall e tenho um arquivo que descreve serviços 
e portas.

Seu conteúdo é +- assim:

BACULA_DIR;9101;tcp udp
BACULA_FD;9102;tcp udp
BACULA_SD;9103;tcp udp
DNS;53;tcp udp
FIREBIRD;3050;tcp
FTP;20:21;tcp
GMAIL_POP;995;tcp

A ideia é criar uma função que receba como parâmetro o nome do serviço (campo 
1) e que retorne a porta (campo 2) e os protocolos (campo 3), atribuídos 
respectivamente à variáveis PORTA e PROTOS.

Porém, a atribuição da variável feita dentro da função não é exportada para o 
shell que a chamou.

Como eu faço para usar estas variáveis, atribuídas dentro da função, fora 
delas. Exemplo:

function GetService () {
PORTA=$(grep '^'${1}';' /etc/firewall/services.conf | cut -f 2 -d ';')
PROTOS=$(grep '^'${1}';' /etc/firewall/services.conf | cut -f 3 -d ';')
}

# (...)

GetService "DNS"

for PROTO in $(echo $PROTOS) ; do 
    iptables -A FORWARD -p $PROTO --dport $PORTA -i $IF_IN -j DROP
done


Sei que a dúvida conceitual é bem básica; até meio besta, mas me deu um branco.


Responder a