Olá Fabiano... muito obrigado pela ajuda, o comando eval realmente funciona.. só tem um porem, há momentos que tenho que passar varios comando bem grandes, por exemplo :
TITULO: "Bloqueio Layer7" COMANDOS $iptables -A FORWARD -m layer7 --l7proto edonkey -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto edonkey -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto fasttrack -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto fasttrack -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto directconnect -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto directconnect -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto bittorrent -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto bittorrent -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto napster -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto napster -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto soulseek -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto soulseek -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto gnutella -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto gnutella -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto msnmessenger -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto msnmessenger -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto imesh -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto imesh -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto ares -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto ares -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto counterstrike-source -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto counterstrike-source -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto doom3 -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto doom3 -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto dayofdefeat-source -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto dayofdefeat-source -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto halflife2-deathmatch -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto halflife2-deathmatch -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto quake-halflife -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto quake-halflife -s any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto quake1 -d any/0 -j DROP $iptables -A FORWARD -m layer7 --l7proto quake1 -s any/0 -j DROP Imagina colocar tudo isso aí em uma unica linha, ficaria dificil de interpretar, tem agluma forma de organizar melhor? vc ou agluem tem mais alguma ideia. Valeu pela ajuda. Abraço Diniz. ----- Original Message ----- From: Fabiano Caixeta Duarte To: shell-script@yahoogrupos.com.br Sent: Friday, September 26, 2008 10:58 AM Subject: Re: [shell-script] Script com Funcao 2008/9/26 Diniz Alexandre Daminelli <[EMAIL PROTECTED]> > Ola Pessoal, > > estou criando um script abaixo: > > > ---------------------------------------------------------- > titulo="Carregando Modulos" > comando="modprobe ip_tables" > > function executar () > { > # exibir titulo > echo -ne "$1" > if > # rodar comando > $2 > then > echo -ne "\t\t\t\t\E[32m[ OK ]\n" ; tput sgr0 > else > echo -ne "\t\t\t\t\E[31m[ERRO]\n" ; tput sgr0 > exit > fi > } > > executar "$titulo" "$comando" > > ---------------------------------------------------------- > > Estou com a seguinte duvida: > neste script passarei somente um "titulo" para a função "executar", até aí > tudo bem, mas o numero de "comando" que passarei para a função "executar" é > variavel, uma hora posso passar somente um comando, mas em noutro momento > possso passar varios comandos.... > > aí é que está minha duvida, como faço para modificar a função "executar" > do script para que uma hora ela aceite um comando, outra hora aceite 3 > comandos, outra hora aceite 'n ' comandos. > > a ideia seria algo do tipo: > > titulo1="Carregando Modulos" > comando1="modprobe ip_tables" > comando2="modprobe ip_conntrack" > comando3="modprobe ip_conntrack_ftp" > > titulo2="Limpando Regras" > comando1="iptables -F INPUT" > comando2="iptables -F OUTPUT" > comando3="iptables -F FORWARD" > comando4="iptables -t mangle -F" > > > Abraço > > Diniz Alexandre Daminelli. > > [As partes desta mensagem que não continham texto foram removidas] > > > ------------------------------------ > > ---------------------------------------------------------- > Esta lista não admite a abordagem de outras liguagens de programação, como > perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio > aviso. > ---------------------------------------------------------- > Sair da lista: [EMAIL PROTECTED] > ---------------------------------------------------------- > Esta lista é moderada de acordo com o previsto em > http://www.listas-discussao.cjb.net > ---------------------------------------------------------- > Servidor Newsgroup da lista: news.gmane.org > Grupo: gmane.org.user-groups.programming.shell.brazil > > Links do Yahoo! Grupos > > > Use o eval e passe a sequencia de comandos separados por ; Ao invés de $2 use eval $2 A chamada de executar fica sendo executar titulo "$comando1; $comando2; $comandoN" -- Fabiano Caixeta Duarte Especialista em Redes de Computadores Linux User #195299 Ribeirão Preto - SP [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]