[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