Como inserir uma variável declarada no corpo do e-mail, enquanto envia mensagens usando o script perl?

3

Estou compartilhando um script perl aqui, que deve enviar um e-mail com o status HDD / RAM no corpo da mensagem: Além disso, a saída do HDD ocorrerá somente se o uso do% HDD estiver acima de 50%.

  1. Como posso incluir as variáveis declaradas (aqui, @hdd e @ram ) no corpo da mensagem?

  2. Como posso fazer o programa terminar sem enviar o email se o uso do disco rígido estiver abaixo de 50% ..? Ou simplesmente, o programa de e-mail deve funcionar se e somente se o HDD% estiver acima de 50%.

No script abaixo, a parte de verificação de HDD / RAM está funcionando bem, assim como a parte de envio de e-mail também está funcionando bem. Exceto que, em vez dos valores de HDD / RAM, "@hdd" e "@ram" são exibidos diretamente no e-mail recebido.

\#!/usr/bin/perl
@hdd = grep {$_ >50} (\'df -H'=~/(\S+%)/g);
@ram = \'free | grep Mem | awk '{print $3/$2 * 100.0}'';
use MIME::Lite;
$to = '[email protected]';
$from = '[email protected]';
$subject = 'HDD / RAM alerts';
$message = 'The % HDD usage is @hdd and the % RAM usage is @ram';
$msg = MIME::Lite->new(
                 From     => $from,
                 To       => $to,
                 Cc       => $cc,
                 Subject  => $subject,
                 Data     => $message
                 );
 $msg->send;

Perdoe-me se a pergunta for um pouco ampla. Mas sendo iniciante, por favor, seja gentil o suficiente para ajudá-lo.

    
por kiran bbnl 26.05.2015 / 08:36

1 resposta

5

Use aspas duplas em " em vez de aspas simples em ' em $message . Você bloqueou a expansão de variáveis / matrizes.

$message = "The % HDD usage is @hdd and the % RAM usage is @ram";
    
por AnFi 26.05.2015 / 09:30