[Cascavel-pm] Duvida com exec

Agustinho Coelho agustinho_coelho em yahoo.com.br
Terça Agosto 12 13:38:21 PDT 2008


> RTFM:
>
>        exec LIST
>        exec PROGRAM LIST
>                The "exec" function executes a system command and never 
> returns-- use "system" instead of "exec" if you
>                want it to return.  It fails and returns false only if 
> the command does not exist and it is executed
>                directly instead of via your system's command shell 
> (see below).
>
> []s,
> Russo

Russo,

Eu li o manual e já tinha tentado antes do exec() usar o system() de 
diversas maneiras mas sem conseguir o efeito desejado. Achava que 
justamente por não retornar uma saída ele fosse mais simples. Segue o 
código como estava com o system() (seguindo exemplo do próprio perldoc):

#/usr/bin/perl -w

use strict;
use warnings;

my @ping = ("ping" , "-c4" , "192.168.0.222" , " " , "\>" , " " , 
"/dev/null\>2\&1");
my @mailup = ("sendmail" , "-f" , "user\@host.com.br" , "-t" , 
"user\@host.com.br" , " " , "\<" , " " , "/home/bkpuser/netmailup.txt");
my @maildown = ("sendmail" , "-f" , "user\@host.com.br" , "-t" , 
"user\@host.com.br" , " " , "\<" , " " , "/home/bkpuser/netmaildown.txt");

system (@ping);

if ( $? == 0 ) {
        system (@mailup);
} else {
        system (@maildown);
}

Eu tentei escapar todos os caracteres duvidosos, tentei interpolar de 
várias maneiras, mas sem sucesso algum. Ele sempre apresenta os 
seguintes erros:
*sh: 1: command not found* ou *ping: unknown host >
*
> Agustinho,
>
> Verifique se o 'script' esteja encontrando o comando 'mail', passe o 
> caminho completo do
> comando, como por exemplo '/usr/bin/mail', e verifique se está 
> funcionando na linha de
> comando também.
>
> Para não depender da tua máquina, que pode ter outros problemas, 
> utilize o Mail::Sender,
> segue um exemplo:
>
> my $sender = new Mail::Sender { smtp => 'mail.servidor.com.br',
>                                from => 'Alerta 
> <naoresponder em servidor.com.br>',
>                                auth => 'LOGIN',
>                                authid => 'alerta em servidor.com.br',
>                                authpwd => 'senha_do_usuario_alerta',
>                                headers => "MIME-Version: 
> 1.0\r\nContent-type: text/html\r\nContent-Transfer-Encoding: 7bit"
>                                };
>
> if (ref ($sender->MailMsg( { to=> "voce em servidor.com.br", subject => 
> "Titulo", msg => "Mensagem",   }) {
>  print "Alerta enviado.";
> }
>
> Abs,
> -Thiago Rondon 

Tiago,

Valeu pela ajuda cara, mas eu já tinha tentando o Mail:Sender (é que eu 
acabei colocando o nome dos módulos do debian + libemail-send-perl +). 
Mas não tinha entendido direito, com o exemplo que você deu ficou um 
pouco mais claro, mais ainda preciso realizar o ping para verificação do 
host. :)


> Reforço a idéia do Champs. Mesmo que seja mais rápido mandar emails 
> dessa forma (o que pode não ser o caso) você vai abrir brechas de 
> segurança.
>
> Escrevi um artigo a um bom tempo atrás no http://www.perl.org.br sobre 
> esse assunto. Dê uma olhada lá.
>
> []'s
>
> -- 
> Alceu Rodrigues de Freitas Junior
> ---
> glasswalk3r em yahoo.com.br
> "when you don't create things, you become defined by your tastes 
> rather than ability. Your tastes only narrow and exclude people. So 
> create." 

Alceu,

Eu procurei pelos seus artigos (inclusive li alguns para iniciantes - eu 
- e achei muitas coisas boas) mas não encontrei especificamente este que 
trata sobre emails. Em que caso especificamente você diz que tem brechas?


Mais uma vez obrigado a todos!

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20080812/670dedc8/attachment.html>


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