[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Parsing de shell script?
From: |
Cristiano |
Subject: |
Parsing de shell script? |
Date: |
Thu, 25 Feb 2010 19:39:17 -0000 |
User-agent: |
eGroups-EW/0.82 |
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?
- Parsing de shell script?,
Cristiano <=