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.