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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] performance


From: Adauto Santos
Subject: Re: [shell-script] performance
Date: Thu, 24 Apr 2014 10:59:19 -0700 (PDT)

Olá Paulo,

fiz dessa maneira para que a função fosse interceptada pela variável a fim de ecoar na tela e não chamar a função.

Fazendo isso, fica mais rápido do que chamando a função Comando().

No caso das regras do iptables foi intencional e só pra testar mesmo.

Abraços!

Adauto


Em Quinta-feira, 24 de Abril de 2014 0:24, Paulo Bettega <address@hidden> escreveu:
 
Olá Adauto, se entendi o script, a função Comando é diferente da variável $Comando.

A variável $Comando é /bin/echo que mostra na tela
as duas linhas, mas não executa o iptables.

A função Comando não mostra na tela, mas sim executa as linhas do iptables,
incluindo a regra e logo depois deletando a mesma regra.
No fim do loop com a função não haverá nenhuma dessas regras no iptables.

Seguindo os exemplos do Julio, os tempos executando a função foram próximos.

Comando ()
{
$@ 2> /dev/null;
if [ $? != 0 ]; then
echo $PROC ` date "+%d/%m/%Y %H:%M:%S"` $@ >> $ARQUIVO_LOG;
RET_COMANDO="ERRO:Comando(s) Invál¡do(s). Verifique o Log";
fi
}

time for ((I=1;I<256;I++)); do
Comando iptables -A FORWARD -s 100.100.100.$I -j ACCEPT
Comando iptables -D FORWARD -s 100.100.100.$I -j ACCEPT
done

real 0m3.255s
user 0m1.083s
sys 0m1.094s

time for I in {1..255}; do
Comando iptables -A FORWARD -s 100.100.100.$I -j ACCEPT
Comando iptables -D FORWARD -s 100.100.100.$I -j ACCEPT
done

real 0m3.340s
user 0m1.056s
sys 0m1.107s

time for I in `seq 1 255`; do
Comando iptables -A FORWARD -s 100.100.100.$I -j ACCEPT
Comando iptables -D FORWARD -s 100.100.100.$I -j ACCEPT
done

real 0m3.109s
user 0m1.013s
sys 0m1.133s

Abraços Paulo Bettega

On 23-04-2014 17:03, Adauto Santos wrote:
> Caros, tenho o script abaixo:
>
> ARQUIVO_LOG="fire.log"
> PROC="Forward-Lan"
>
> Comando()
> {
> $@ 2> /dev/null
> if [ $? != 0 ]
> then
> echo $PROC ` date "+%d/%m/%Y %H:%M:%S"` $@ >> $ARQUIVO_LOG
> RET_COMANDO="ERRO:Comando(s) Invádo(s). Verifique o Log";
> fi
> }
>
> Comando="/bin/echo"
> RET_COMANDO="OK";
>
> for I in `seq 1 255`
> do
>
> $Comando iptables -A FORWARD -s 100.100.100.$I -j ACCEPT
> $Comando iptables -D FORWARD -s 100.100.100.$I -j ACCEPT
>
> done
>
>
> E quando o executo dessa forma, ecoando na tela, tenho esse resultado:
>
> # time ./teste.sh
>
> real 0m0.546s
> user 0m0.096s
> sys 0m0.407s
>
> Se mudo o trecho do for para essa forma:
>
> #Comando="/bin/echo"
> RET_COMANDO="OK";
>
> for I in `seq 1 255`
> do
>
> Comando iptables -A FORWARD -s 100.100.100.$I -j ACCEPT
> Comando iptables -D FORWARD -s 100.100.100.$I -j ACCEPT
>
> done
>
> Obtenho esse resultado:
>
> # time ./teste.sh
>
> real 0m2.513s
> user 0m0.307s
> sys 0m2.056s
>
> Pergunto, é possível deixá-lo mais performático?
>
> Obrigado.
>
> Adauto Santos
>



reply via email to

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