Fala Gunter, Aconselho que vc refaça o seu benchmark usando sed ou awk no log do postfix. Aliás, se não me engano, o Tiago Barcellos Peczenyj (colega da lista) está fazendo justamente isso para trocar o core do Jegue Panel (um tremendo projeto nacional (da Paraíba) livre, para controlar redes de servidores Samba e Postfix) de perl para Shell.
Abraços, Julio :wq Em 09/03/07, Bruno Gunter Fricke <[EMAIL PROTECTED]> escreveu: > > Grande Julio e demais colegas da lista, > > Perdoem-me, realmente não li o rodapé ;-) > Não toco mais no assunto... Afinal eu posso em shell chamar outra > aplicação que conecte a um banco. > > Quanto a um shell que faz isto em apenas uma linha, realmente é válido > neste ponto. Porém teremos aquele ponto de performance. Não tocarei mais > no assunto, porém por experiencia própria, se o arquivo é muito grande > (como um log de postfix), não recomendo o shell. > > Mas realmente, para um arquivo pequeno como o conf do squid, resolve e > muito bem. > > []'s > Gunter > > > On Fri, 2007-03-09 at 11:22 -0300, Julio C. Neves wrote: > > Ô Bruno, > > vc mandou fazer em PHP pq não conhece Cobol, se conhecesse, > > provavelmente > > aconselharia o uso desta linguagem :). Mas de qq forma isso aqui é uma > > lista > > de Shell e como diz no rodapé de todas as msgs: > > ---------------------------------------------------------- > > 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. > > ---------------------------------------------------------- > > Portanto vamos falar em shell antes que te modere. Se vc quiser, *em > > pvt* > > (pq se vc voltar a tocar no assunto na lista, vou te moderar) aposto > > um > > chope contigo que para resolver este problema ou qq outro que trabalhe > > com > > arquivos planos o shell dá banho de performance no PHP, até pq o PHP > > *obrigatóriamente* terá de rodar sob um shell. > > > > Christian, vamos ao que interessa,: tentei fazer um genérico pq acho > > que foi > > isso que vc queria qdo disse aleatorio. Veja: > > > > $ cat troca.sh > > sed "s/^#\(.*lab$1$\)/\^\1/;s/^\(http.*lab$1$\)/#\1/;s/^\^//" s.conf > > > > Veja as explicações do Tiago e complemente com estas: > > Os ponto-e-vírgula dividem o sed em 3 pedaços que são executados na > > ordem em > > que aparecem. O artifício que usei foi procurar a linha que termina > > pelo lab > > desejado e está comentada (começa por #) e trocar o jogo-da-velha por > > um > > circunflexo, em seguida pego a descomentada (começa por http) e > > termina pelo > > lab desejado e ponho um comentario (#) e, para terminar, extraio o > > circunflexo que tinha colocado. > > > > 1o. Pedaço - s/^#\(.*lab$1$\)/\^\1/ > > Aqui os parênteses precisam de ser escapados com contrabarras e servem > > para > > armazenar o conteúdo entre eles. O resto da linha diz: substitua (s) a > > linha > > que começa (^) por jogo-da-velha e termina (o último $) em lab seguido > > do > > parâmetro passado ($1), por cincunflexo (^) seguido do resto da linha > > sem o > > jogo-da-velha. > > > > O resto da linha é o que estava entre parênteses, que foi chamado de > > volta > > pelo uso do \1. > > > > 2o. Pedaço - s/^\(http.*lab$1$\)/#\1/ > > Bastante parecido com o primeiro. troque (s) a linha que começa (^) > > por http > > e termina (o último $) em lab seguido do parâmetro passado ($1), por # > > seguido pelo restante da linha (ou seja, o \1 está devolvendo o que > > foi > > guardado pelos parênteses). > > > > 3o. Pedaço - s/^\^// > > Troca o circunflexo (o segundo) que começa (o primeiro) um linha por > > nada. > > > > A vantagem deste método é que vc passa somente o número do lab como > > parâmetro e seu estado é trocado, isto é, permite comentar a linha do > > allow > > e descomentar o do deny correspondente ou vice versa. Teste e, caso vc > > goste, troque sed por sed -i, para que as alterações se reflitam no > > arquivo > > (por enquanto só aparece na tela). > > > > Agora me diga: se em Shell um one-liner que faz isso tudo, para que > > usar > > outra linguagem. No teste a seguir passei o 3 como parâmetro para > > alterar o > > lab3. > > > > $ ./troca.sh 3 > > #http_access deny lab1 > > http_access allow lab1 > > > > #http_access deny lab2 > > http_access allow lab2 > > > > http_access deny lab3 > > #http_access allow lab3 > > > > #http_access deny lab4 > > http_access allow lab4 > > $ cat troca.sh > > sed "s/^#\(.*lab$1$\)/\^\1/;s/^\(http.*lab$1$\)/#\1/;s/^\^//" s.conf > > > > Em 09/03/07, Bruno Gunter Fricke <[EMAIL > > PROTECTED]<gunter%40infolink.com.br>> > escreveu: > > > > > > Porque o PHP vai trabalhar muito melhor os casos do que o shell. Não > > é > > > que seja impossível, apenas não será prático, sem contar que o shell > > é > > > muito mais lento do que o PHP. Talvez, seja melhor até fazer em > > Perl. > > > > > > Ou será que você é daqueles que "acham" que o shell conecta em banco > > de > > > dados também? ;-) > > > > > > []'s > > > Gunter > > > > > > > > > On Fri, 2007-03-09 at 08:10 -0300, Tiago Barcellos Peczenyj wrote: > > > > Por que PHP? > > > > É impossivel fazer via qualquer comando interno do shell ou > > ferramenta > > > > basica do mundo unix? > > > > > > > > Uma solução, para comentar, seria utilizar o sed com a opção -i > > para > > > > que , > > > > na linha que vc quer, ele substituisse a linha por ela mesma porem > > com > > > > um > > > > simbolo de # na frente > > > > > > > > sed -i 's/REGRA/#&/' arquivo > > > > > > > > agora e para descomentar? > > > > > > > > sed -i '/REGRA/s/^#//' > > > > > > > > ou seja, na ocorrencia da regra, ele vai trocar o simbolo # do > > começo > > > > da > > > > linha por nada. > > > > > > > > Pode ficar melhor? Pode, existem N formas, esta é só uma. > > > > > > > > []´s Tiago > > > > > > > > On 3/9/07, Bruno Gunter Fricke <[EMAIL > > > > PROTECTED]<gunter%40infolink.com.br> > <gunter% > > 40infolink.com.br>> > > > wrote: > > > > > > > > > > Use PHP. > > > > > > > > > > > > > > > ----- Original Message ----- > > > > > From: kblocat > > > > > To: [email protected]<shell-script%40yahoogrupos.com.br> > <shell-script% > > 40yahoogrupos.com.br><shell-script% > > > > 40yahoogrupos.com.br> > > > > > Sent: Thursday, March 08, 2007 11:34 PM > > > > > Subject: [shell-script] Alterar linhas em um arquivo via shell > > > > script > > > > > > > > > > Pessoal, boa noite. > > > > > > > > > > Meu problema é o seguinte : > > > > > > > > > > Preciso liberar/bloquear laboratórios através do squid.conf, ou > > > > seja : > > > > > > > > > > #http_access deny lab1 > > > > > http_access allow lab1 > > > > > > > > > > #http_access deny lab2 > > > > > http_access allow lab2 > > > > > > > > > > #http_access deny lab3 > > > > > http_access allow lab3 > > > > > > > > > > #http_access deny lab4 > > > > > http_access allow lab4 > > > > > > > > > > Resumindo, dependendo da solicitação do usuário, por exemplo: > > Ele > > > > quer > > > > > bloquear a Internet no lab 1 e lab3 > > > > > > > > > > Beleza, é só comentar a linha allow dos labs 1 e 3 e descomentar > > as > > > > linhas > > > > > com deny. > > > > > > > > > > Montei arquivos squid.conf com as linhas comentadas e depois o > > > > script > > > > > deletava e renomeava os arquivos. > > > > > > > > > > Mas às vezes o cara quer liberar e bloquear em sequencias > > > > aleatórias, aí > > > > > teria que criar arquivos com todas as combinações possíveis, > > além > > > > disso > > > > > qquer alteração no squid.conf, teria que replicar nos demais: mó > > > > trampo. > > > > > > > > > > Qual a pergunta: teria como eu comentar/descomentar as linhas de > > > > acordo > > > > > com > > > > > a seleção aleatória do usuário via shell, sem que ele tenha que > > > > editar o > > > > > squid.conf no braço ? > > > > > > > > > > Tá lançado o desafio. Aguardo sugestões . > > > > > > > > > > Obrigado > > > > > > > > > > Christian > > > > > > > > > > [As partes desta mensagem que não continham texto foram > > removidas] > > > > > > > > > > [As partes desta mensagem que não continham texto foram > > removidas] > > > > > > > > > > > > > > > > > > > > > > > -- > > > > Tiago B Peczenyj > > > > Linux User #405772 > > > > > > > > # cd /pub > > > > # more beer > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas]
