[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