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

kir*_*bnl 3 mail perl sendmail

我在这里共享一个 perl 脚本,它应该在邮件正文中发送带有 HDD/RAM 状态的邮件:此外,只有当 %HDD 使用率高于 50% 时才会发生 HDD 输出。

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

  2. 如果硬盘使用率低于 50%,如何让程序在不发送邮件的情况下终止..?或者简单地说,当且仅当 HDD % 高于 50% 时,邮件程序才能工作。

在下面的脚本中,硬盘/内存检查部分工作正常,邮件发送部分也工作正常。除了在收到的邮件中直接显示“@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 = 'admin@company.co.in';
$from = 'alerts@company.co.in';
$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;
Run Code Online (Sandbox Code Playgroud)

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

AnF*_*nFi 5

使用双引号",而不是单引号'$message。您阻止了变量/数组的扩展。

$message = "The % HDD usage is @hdd and the % RAM usage is @ram";
Run Code Online (Sandbox Code Playgroud)