[Cascavel-pm] Script em Perl
rafamv1
rafamv1 em ig.com.br
Terça Fevereiro 27 05:20:27 PST 2007
Oi Fernando. Preciso colocar para funcionar o código no script. Gabriel
Vieira me passou esse novo script, no entanto ele apaga todo o conteúdo do
arquivo. Eu precise que ele apague somente o site que for digitado na
variável $site. Consegui fazer o script inverso, para adicionar sites na
mesma lista,contudo, não entendi a lógica de como retirar um determinado
site. Segue abaixo o script que o Gabriel me passou.
#!/usr/bin/perl
use warnings;
use strict;
my $arquivo = '/etc/squid/arquivos/liberados/dl_geral';
open(LIBERADOS,$arquivo) or die "Nao pode abrir o arquivo $arquivo: $!";
my @linhas = <LIBERADOS>;
close (LIBERADOS);
print "@linhas\n";
# leitura
print "Insira o site a ser removido: ";
my $site = <STDIN>;
chomp $site;
# execução
open(LIBERADOS,">",$arquivo) or die "Nao pode abrir o arquivo $arquivo: $!";
foreach my $linha (@linhas){
if ($linha eq $site){
print "O site $site foi removido com sucesso\n";
}
else{
print LIBERADOS "$linha\n";
}
}
close(LIBERADOS) or die "Nao pode fechar o arquivo $arquivo: $!";
else {
open ( LIBERADOS,">>$arquivo" ) or die ( "Nao pode abrir o arquivo
$arquivo: $!" );
print ( LIBERADOS "\n$site" );
close ( LIBERADOS ) or die ( "Nao pode fechar o arquivo $arquivo: $!"
);
system("squid -k reconfigure");
print " O site foi adicionado com sucesso.\n";
}
---------------------------->8----------------------------
Em (09:55:49), Cascavel Perl Mongers escreveu:
>_______________________________________________
>Cascavel-pm mailing list
>Cascavel-pm em pm.org
>
>----------
>
> Só pra começar:
>O especificardor ">>" é utilizado para inserir (acrescentar) novo conteúdo
a um arquivo. Já o especificador ">" é utilizado para definir um novo
conteúdo (apaga o antigo e coloca o novo) ou ainda criar o arquivo.
>
>Seguindo:
>
>- A sua estrutura está muito prematura.
>- Você usa um "open" que não possui especificamente um "close".
>- Você faz uma substituição que não lhe serve de nada, em uma variável cujo
valor não é o que você espera.
>
>- Você não alterou o conteúdo do arquivo, logo ele permanecerá o mesmo a
não ser que um novo site seja adicionado.
>
>Abuse do poder do Perl :D
>
>Fazendo o seu código funcionar:
>
>- Apenas coloquei para que fosse impresso um novo conteúdo ao arquivo,
sendo que esse novo conteúdo seria o conteúdo atual com excessão da linha
cujo valor é o "$site".
>
>----------------------------8<----------------------------
>#!/usr/bin/perl
>
>use warnings;
>use strict;
>
>my $arquivo = '/etc/squid/arquivos/liberados/dl_geral';
>
>open(LIBERADOS,$arquivo) or die "Nao pode abrir o arquivo $arquivo: $!";
>my @linhas = ;
>close (LIBERADOS);
>print "@linhas\n";
>
># leitura
>print "Insira o site a ser removido: ";
>
>my $site = ;
>chomp $site;
>
># execução
>open(LIBERADOS,">",$arquivo) or die "Nao pode abrir o arquivo $arquivo:
$!";
>foreach my $linha (@linhas){
> if ($linha eq $site){
>
> print "O site $site foi removido com sucesso\n";
> }
> else{
> print LIBERADOS "$linha\n";
> }
>}
>close(LIBERADOS) or die "Nao pode fechar o arquivo $arquivo: $!";
>
>else {
> open ( LIBERADOS,">>$arquivo" ) or die ( "Nao pode abrir o arquivo
$arquivo: $!" );
> print ( LIBERADOS "\n$site" );
> close ( LIBERADOS ) or die ( "Nao pode fechar o arquivo $arquivo: $!" );
>
> system("squid -k reconfigure");
> print " O site foi adicionado com sucesso.\n";
>} ---------------------------->8----------------------------
>
>On 2/22/07, Rafael Lebrão Martins < rafamv1 em ig.com.br > wrote:
>Boa tarde, estou com problemas para criar um script que remove sites de uma
>lista do squid. A função do script é receber como argumento o nome do site
a
>ser removido, caso o site exista na lista e imprimir na tela a mensagem de
>
>que o site foi removido com sucesso. Fiz o script abaixo, quando o executo
>ele imprime a mensagem de que o site foi removido, no entanto, se eu abro o
>arquivo do squid o site continua lá. Preciso de ajuda para resolver esse
>
>problema... Segue abaixo o script... Obrigado.
>
>#!/usr/bin/perl
>
>use warnings;
>use strict;
>
>my $arquivo = '/etc/squid/arquivos/liberados/dl_geral';
>open ( LIBERADOS,$arquivo ) or die ( "Nao pode abrir o arquivo: $!" );
>
>my @linhas = ;
>close (LIBERADOS);
>print "@linhas\n";
>print "Insira o site a ser removido: ";
>my $site = ;
>chomp $site;
>open ( LIBERADOS,">>$arquivo" ) or die ( "Nao pode abrir o arquivo: $!" );
>
>my $linhas = "@linhas";
>if ($linhas =~ $site) {
>#delete (LIBERADOS $site};
> s/$site/funcionou/gi;
>print "O site $site foi removido com sucesso\n";
>close ( LIBERADOS ) or die ( "Nao pode fechar o arquivo: $!" );
>
>}
>
>else {
>open ( LIBERADOS,">>$arquivo" ) or die ( "Nao pode abrir o arquivo: $!" );
>print ( LIBERADOS "\n$site" );
>close ( LIBERADOS ) or die ( "Nao pode fechar o arquivo: $!" );
>
>system("squid -k reconfigure");
>print " O site foi adicionado com sucesso.\n";
>}
>
>Rafael Lebrao Martins.
>Cursando Ciências Contábeis.
>Universidade Estadual Do
>
>Sudoeste Da Bahia.
>Microsoft Certified
>Professional
>70-271:Supporting Users and
>Troubleshooting a Microsoft
>Windows XP Operating System
>TEL - (77) 9989-6327
>
>_______________________________________________
>
>Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
>--
>Gabriel Vieira
>
>----------
Mais detalhes sobre a lista de discussão Cascavel-pm