使用 perl 脚本发送邮件时,如何在邮件正文中输入声明的变量?

使用 perl 脚本发送邮件时,如何在邮件正文中输入声明的变量?

我在这里分享一个 perl 脚本,该脚本应该发送一封邮件,邮件正文中包含 HDD/RAM 状态:此外,仅当 %HDD 使用率超过 50% 时,才会发生 HDD 故障。

  1. 如何在消息正文中包含声明的变量(此处@hdd和)?@ram

  2. 如果硬盘使用率低于 50%,我该如何让程序终止而不发送邮件?或者简单地说,当且仅当硬盘使用率高于 50% 时,邮件程序才应该工作。

在下面的脚本中,HDD/RAM 检查部分工作正常,邮件发送部分也工作正常。只是,在收到的邮件中直接显示的不是 HDD/RAM 值,而是“@hdd”和“@ram”。

\#!/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;

如果问题有点宽泛,请原谅我。但作为初学者,请善意帮助我。

答案1

在 中使用双引号"代替单引号。您已阻止变量/数组的扩展。'$message

$message = "The % HDD usage is @hdd and the % RAM usage is @ram";

相关内容