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

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

Re: [shell-script] Parsing de shell script?


From: Marcelo Salhab Brogliato
Subject: Re: [shell-script] Parsing de shell script?
Date: Thu, 25 Feb 2010 22:06:20 -0300

Olá Cristiano,
vc pode fazer assim:

No começo do script coloque:
echo_run() {
    echo "$*"
    "$*"
}

e em cada linha que vc quer que seja printada, vc faz:
echo_run iptables ........ (bla bla bla)

Desta maneira, elas serão sempre printadas na tela.
Se quiser parar com isso, comente o echo "$*"...
Se quiser só printar, sem executar, comente o "$*"
Outra maneira seria criar uma variável que indica o que vc quer:
RUN=1
DEBUG=1

echo_run() {
    if [ $DEBUG == 1 ]; then echo "$*"; fi
    if [ $RUN == 1 ]; then "$*"; fi
}

Pelo que entendi, isso pode te ajudar ;)

abraços,
Salhab



2010/2/25 Cristiano <address@hidden>

>
>
> Senhores, em meus scripts mais complexo, costumo declarar as variáveis em
> um arquivo separado e chamá-las através do source no script principal.
>
> O problema é que às vezes fica dífícil dar manutenção no script,
> principalmente quando não lembro o conteúdo de todas as variáveis.
>
> Depurar um script de firewall nestas condições, às vezes exiger abrir o
> arquivo das variáveis várias vezes para entender o que cada comando faz. Um
> exemplo:
>
> while read IP_EXT IP_INT PORTAORIG PORTADEST
> do
> iptables -t nat -A PREROUTING -p tcp -i $IF_NET -d $IP_EXT --dport
> $PORTAORIG -j DNAT --to-destination $IP_INT:$PORTADEST
> iptables -t nat -A POSTROUTING -p tcp -o $IF_NET -s $IP_INT --sport
> $PORTAORIG -j SNAT --to-source $IP_EXT:$PORTADEST
> iptables -A FORWARD -p tcp -d $IP_EXT --dport $PORTAORIG -j ACCEPT
> iptables -A FORWARD -p tcp -d $IP_INT --dport $PORTADEST -j ACCEPT
>
> iptables -t nat -A PREROUTING -p udp -i $IF_NET -d $IP_EXT --dport
> $PORTAORIG -j DNAT --to-destination $IP_INT:$PORTADEST
> iptables -t nat -A POSTROUTING -p udp -o $IF_NET -s $IP_INT --sport
> $PORTAORIG -j SNAT --to-source $IP_EXT:$PORTADEST
> iptables -A FORWARD -p udp -d $IP_EXT --dport $PORTAORIG -j ACCEPT
> iptables -A FORWARD -p udp -d $IP_INT --dport $PORTADEST -j ACCEPT
> done < <(echo "$IP_IMAP $SRV_IMAP $IMAP_EXT $IMAP
> $IP_GOGLOBAL $SRV_GOGLOBAL $GOGLOBAL_EXT $GOGLOBAL
> $IP_HG_MGA $HG_MGA $HG_EXT $HG
> $IP_HIPATH_MGA $HIPATH_MGA $HIPATH_EXT $HIPATH")
>
> Lembrar quais são os IPs e portas atribuídos a cada variável acaba virando
> um parto. E, embora o while seja uma mão na roda para evitar a repetição de
> texto, entender o que estas intruções fazem não é a coisa mais intutiva do
> mundo.
>
> E gostaria de saber se existe algum parâmetro no bash, ou algum aplicativo,
> que leia o meu script, faça as expansões que o bash faria, e me retorne
> apenas o resultado. Algo tipo o bash -x, mas que me retorne apenas o
> comandos que seriam em cada laço (com suas variáveis devidamente expandidas)
> e não a o laço em si, como o bash -x faz.
>
> Consegui explicar?
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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