[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Remoção de um bloco de texto de um arquivo
From: |
Alexandre Gorges |
Subject: |
Re: [shell-script] Remoção de um bloco de texto de um arquivo |
Date: |
Mon, 05 Jan 2009 16:27:28 -0200 |
User-agent: |
Microsoft-Entourage/12.15.0.081119 |
Renato,
Eu para editar os virtualhost, usei o Include do apache.
Assim dentro do httpd.conf fica apenas uma chamada para o arquivo de
configuração de um dominio.
Para remover, eu retiro a linha do Include dentro do httpd.conf e apago o
arquivo que contem o virtualhost do dominio.
O meu está assim:
No final do arquivo httpd.conf padrão.
Include /etc/httpd/conf/sites.conf
Dentro do arquivo sites.conf
Include /etc/httpd/conf/vhosts/xxxxturbo.com.br
Include /etc/httpd/conf/vhosts/xxxxxxbrasil.net
Include /etc/httpd/conf/vhosts/ixxxxtro.com.br
Include /etc/httpd/conf/vhosts/xxxrk.com.br
E dentro de cada arquivo, o virtualhost de cada dominio.
Para apagar fica muito fácil.
#remove site do apache
rm -f /etc/httpd/conf/vhosts/$1
grep -E -v '(^|[^._[:alnum:]])'$1'([^._[:alnum:]]|$)'
/etc/httpd/conf/sites.conf > /etc/httpd/conf/sites2.conf
cp /etc/httpd/conf/sites.conf /etc/httpd/conf/sites.conf-bk
mv /etc/httpd/conf/sites2.conf /etc/httpd/conf/sites.conf
/sbin/service httpd reload
Com isso, você não tem risco de ficar editando o httpd.conf.
[]'s
Alexandre Gorges
http://algorges.blogspot.com
MSN/Gtalk/iCHAT/Skype/Jabber: address@hidden
From: Renato de Oliveira Diogo <address@hidden>
Reply-To: <address@hidden>
Date: Mon, 5 Jan 2009 16:11:41 -0200
To: <address@hidden>
Subject: Re: [shell-script] Remoção de um bloco de texto de um arquivo
Olá pessoal
então, diretamente com o sed eu não sei trabalhar...
Agora desenvolvi um laco em que eu pego as linhas de inicio e fim do
bloco, aí com o sed ficaria mais facil.... vejam abaixo:
===
COUNT=0;
MARK=0;
while read L;
do
let COUNT++;
if [ "$L" == '<VirtualHost *:80>' ];
then
LI=$COUNT;
elif [ "$L" == '</VirtualHost>' -a "$MARK" == 1 ];
then
LF=$COUNT;
break;
elif [ "$L" == "ServerName subdominio.dominio.com.br" ];
then
MARK=1;
fi
done < teste.txt
===
Agora tenho duas variáveis: LI que tem o número da linha onde inicia o
bloco; LF que tem o número da linha onde termina o bloco.
Com isto bastaria dar
===
if [ $MARK == 1 ]
then
sed -i '$LI,$LFd' texte.txt
fi
===
Agora o problema é que como a string está fechada com aspas simples, o
shell não está convertendo a variável para o número. Como eu
resolveria isso?
[]s
________________________________________________
Renato de Oliveira Diogo
Bacharel em Ciência da Computação
UNESP - Bauru
LPIC1 - Linux Professional Institute Certification - Nível 1
address@hidden <mailto:renato.diogo%40gmail.com>
address@hidden <mailto:renato.diogo%40yahoo.com.br>
2009/1/5 jimmy <address@hidden <mailto:ronaldo_tgz%40yahoo.com.br>
>:
> On Mon, Jan 05, 2009 at 12:11:18PM -0200, Renato de Oliveira Diogo wrote:
>> Senhores, bom dia
>>
>> estou desenvolvendo um script que tem o intuito de remover um bloco de
>> texto. Um exemplo do arquivo abaixo:
>> ===
>> <VirtualHost *:80>
>> ServerAdmin address@hidden <mailto:suporte%40ns.net.br>
>> DocumentRoot /var/www/vhosts/dominio.com.br/httpdocs
>> ServerName www.dominio.com.br
>> ServerAlias dominio.com.br
>> ErrorLog /var/www/vhosts/dominio.com.br/statistics/logs/error_log
>> CustomLog /var/www/vhosts/dominio.com.br/statistics/logs/access_log common
>> CBandUser dominio
>> ...
>> ...
>> <IfModule mod_ssl.c>
>> SSLEngine off
>> </IfModule>
>> </VirtualHost>
>>
>> <VirtualHost *:80>
>> ServerName subdominio.dominio.com.br
>> ServerAdmin address@hidden <mailto:suporte%40ns.net.br>
>> DocumentRoot /var/www/vhosts/dominio.com.br/subdomains/subdominio/httpdocs
>> CustomLog /var/www/vhosts/dominio.com.br/statistics/logs/access_log
>> combined
>> ErrorLog /var/www/vhosts/dominio.com.br/statistics/logs/error_log
>> ...
>> ...
>> Options -Includes -ExecCGI
>> </Directory>
>> </VirtualHost>
>> ===
>>
>> O bloco que preciso remover inicia com <VirtualHost *:80> e termina
>> com seu fechamento </VirtualHost>.
>> Porém, pode haver mais de um bloco de texto que inicia e fecha com
>> estes. Para diferenciar, o bloco de texto deve conter "ServerName
>> subdominio.dominio.com.br"
>>
>> Sei que a remoção eu teria que fazer com o sed, porém como eu pego
>> essas linhas especificas que me complicou a vida.
>>
>> Alguem tem alguma ideia, que poderia me ajudar?
>>
>> []s
>> ________________________________________________
>> Renato de Oliveira Diogo
>>
>> Bacharel em Ciência da Computação
>> UNESP - Bauru
>>
>> LPIC1 - Linux Professional Institute Certification - Nível 1
>>
>> address@hidden <mailto:renato.diogo%40gmail.com>
>> address@hidden <mailto:renato.diogo%40yahoo.com.br>
>>
>> ------------------------------------
>
> saudações renato,
>
> não entendi muito bem o que você quis dizer com "remover um bloco de
> texto" se era para apagá-lo de dentro do arquivo ou para exibir somente
> esse bloco na tela, de qualquer forma aí vai um script simples, espero
> que lhe sirva:
>
> #!/usr/bin/sed -f
>
> /<VirtualHost \*:80>/ {
> :a;
> N;
> /<\/VirtualHost>/ bb;
> ba;
> };
> :b;
> /ServerName subdominio\.dominio\.com\.br/!d;
>
> se preferir junte todas as linhas numa só e execute diretamente da linha
> de comandos, os ";" já estão nos seus lugares.
>
[As partes desta mensagem que não continham texto foram removidas]
- Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/05
- Re: Remoção de um bloco de texto de um arquivo, marlon_mca, 2009/01/05
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, jimmy, 2009/01/05
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/05
- Re: [SPAM] Re: [shell-script] Remoção de um bloco de texto de um arquivo, [DirectWeb] - Marcio, 2009/01/05
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, jimmy, 2009/01/05
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/05
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, jimmy, 2009/01/06
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/06
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/06
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/06
- Re: [shell-script] Remoção de um bloco de texto de um arquivo, jimmy, 2009/01/06
- Re: [SPAM] Re: [shell-script] Remoção de um bloco de texto de um arquivo, Renato de Oliveira Diogo, 2009/01/05