[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Exportar resultado de função
From: |
Alexandre Mulatinho |
Subject: |
Re: [shell-script] Exportar resultado de função |
Date: |
Sun, 22 Aug 2010 11:17:15 -0300 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.11) Gecko/20100711 Thunderbird/3.0.6 |
OPz..
Ignore essas linhas no primeiro script:
TOTAL=`cat conteudo.txt | wc -l`
LINE=`sed -n "/$1/p" conteudo.txt`
Muita cerveja no domingo dá nisso.. ;)
abraços,
Mulatinho.
On 08/22/2010 11:15 AM, Alexandre Mulatinho wrote:
> Bom dia,
>
> A melhor forma para fazer isso na minha opinião é guardando em uma
> variável a linha de argumentos e processando ela após isso.
>
> No caso:
>
> Esqueça essa função "GetService", irá ficar redundante;
>
> --script--
> ARQUIVO=conteudo.txt
> TOTAL=`cat conteudo.txt | wc -l`
>
> while read LINE
> do
> LINE=`sed -n "/$1/p" conteudo.txt`
> PORTA=`echo $LINE | cut -d';' -f2`
> PROTO=`echo $LINE | cut -d';' -f3`
>
> iptables -A FORWARD -p $PROTO --dport $PORTA -i $IF_IN -j DROP
> done << $ARQUIVO
> --script--
>
> Ou se realmente quiser passar um argumento para função:
>
> --script-
> function GetService()
> {
> LINE=`sed -n "/$1/p" conteudo.txt`
> PORTA=`echo $LINE | cut -d';' -f2`
> PROTO=`echo $LINE | cut -d';' -f3`
> }
>
> GetService "FTP"
> iptables -A FORWARD -p $PROTO --dport $PORTA -i $IF_IN -j DROP
> --script--
>
> Mas aí voce vai ter que fazer um por um :P
>
> Mete a mão na massa!
>
> abraços,
> Mulatinho.
>
> On 08/21/2010 11:47 AM, Cristiano wrote:
>
>> 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.
>>
>>
>>
>>
>>
>
>
--
Alexandre Mulatinho
Analista de Suporte/Sistemas
Fone: +55 81 92781715