[Cascavel-pm] Novo na lista e com dúvidas

Luis Campos de Carvalho monsieur_champs em yahoo.com.br
Quarta Junho 30 16:18:07 CDT 2004


Carlan Calazans wrote:
> As permissões estão ok, tenho certeza. Antes de criar este cgi fiz uns 
> testes com um pl e funcionou perfeitamente, rodando tudo na minha 
> máquina e enviando para um ftp externo.

   Mas será que o usuário que roda o apache tem as mesmas permissões que 
você? Averigüe isto, por favor...

> Exatamente! Tive que recorrer a fonte para aprender a usá-lo.
> É o que quero, rodar através de um 'cron job', mas antes preciso do 
> danado funcionando. Estou enviando o script logo abaixo, provavelmente 
> existem erros gritantes.

   Talvez a melhor alternativa não seja rodar via CGI...
   O perl tem um sistema de debugging, via switch '-d'. Dá uma olhada no 
manual.

> Você vão rir de mim, mas o que é putamplexo? =)

   Ninguém aqui vai dar risada de você por isso.
   "Putamplexos" é um neologismo inventado pelo meu irmão, o André 
Carvalho. É a fusão de "puta" (a *gíria* utilizada para denotar 
superlativo absoluto de alguma coisa) e "amplexo" (verbete culto para 
"abraço"). Portanto, "putamplexos" == "abração".

   Tem sugestões minhas no meio do seu script... ;-)

> ##################################### inicio script 
> ###########################################
> #!/usr/bin/perl -w

   # Tira aquele "-w" dali!!
   use warnings; # é mais legível

> # Autor: Carlan Calazans (www.carlan.calazans.nom.br)
> use strict;
> use CGI qw(:standard);
> use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
> use Net::FTP;
> 
> print header, start_html("Backup");
> 
> # Ajuda
> # Formato das variaveis:
> # USERBD='nomeusuariocpanel_usuario'
> # BD='nomeusuariocpanel_basededados'
> 
> my $USERBD='';
> my $SENHABD='';
> my $BD='';
> 
> # Diretorio do webserver
> my $DIRLOCAL='/home/user/backup';
> # Diretorio do ftpserver
> my $DIRDEST='/home/user/bkp';
> 
> # Arquivos
> my $DATA=`date +%d-%m-%Y`;
> chomp($DATA);
> my $NARQ="backup-$DATA.sql";
> my $ARQ="backup-$DATA.tar.gz";
> 
> # ftp1
> my $HOSTFTP='';
> my $USERFTP='';
> my $SENHAFTP='';
> 
> # ftp2
> # my $HOSTFTP2='';
> # my $USERFTP2='';
> # my $SENHAFTP2='';
> 
> # crie o diretório backup no servidor web
> if (!( -d $DIRLOCAL))
> {

   # system() demora e é perigoso!
   mkdir $DIRLOCAL unless -d $DIRLOCAL;

> }
> 
> # Cria arquivo de log
> print "Gerando o log...<br />";
> open(my $LOGUE,">> $DIRLOCAL/backup.log") or die "Nao foi possivel criar 
> o arquivo de log...<br />";
> print $LOGUE 
> "\n############################################################################################\n"; 
> 
> print $LOGUE "Data: ",$DATA,"\n";
> print $LOGUE "Base de dados: ", $BD,"\n";
> print $LOGUE "Arquivo de backup: ",$ARQ,"\n";
> close ($LOGUE);
> 
> # Cria e compacta arquivo de backup
> system("mysqldump --quick --all --add-drop-table --add-locks 
> --lock-tables --quote-names --user=$USERBD --password=$SENHABD $BD > 
> $NARQ > /dev/null && tar cvzf $ARQ $NARQ > /dev/null && rm -f $NARQ > 
> /dev/null");
> print "<br />Arquivo .sql criado com sucesso...<br />";
> 
> # Conecta ao FTP
> print "Conectando a ",$HOSTFTP,"<br />";
> 
> # Envia ao ftp1
> my $ftp=Net::FTP->new($HOSTFTP);
> $ftp->login($USERFTP, $SENHAFTP) or die "Ops, deu erro. Usuario ou senha 
> incorretos...";

# O Net::FTP seta erros no $@.
# Use ele quando exibir suas mensagens de erro.
# Isso vai ajudar a gente a saber o que está acontecendo...

> $ftp->mkdir($DIRDEST);
> $ftp->cwd($DIRDEST) or die "Ops, deu erro. Diretorio nao encontrado...";
> $ftp->binary();
> $ftp->put($ARQ) or die "Ops, deu erro. Arquivo nao encontrado...";
> $ftp->quit();
> 
> print "Arquivo enviado com sucesso ;)\n";
> 
> # Envia ao ftp2
> 
> # Email de confirmacao do backup com o log em anexo
> 
> print end_html;
> ################################## fim script 
> ##############################################
> 

   Não está tão ruim quanto parece... :-) aliás, está até bem 
organizadinho...

   Dá uma olhada nas minhas sugestões.
   Eu tenho quase certeza de que você está com problemas com o 
gerenciamento dos erros encontrados pelo Net::FTP... e parece ser um 
problema trivial.

   Tente adicionar as modificações que eu sugeri, e rodar novamente. As 
mensagens de erro devem vir mais claras.

   Boa sorte!
   Putamplexos!
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   Luis Campos de Carvalho is BSc in Comp Science,
   PerlMonk [SiteDocClan], Cascavel-pm Moderator,
   Unix Sys Admin && Certified Oracle DBA
   http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=




Mais detalhes sobre a lista de discussão Cascavel-pm