我在这里分享一个 perl 脚本,该脚本应该发送一封邮件,邮件正文中包含 HDD/RAM 状态:此外,仅当 %HDD 使用率超过 50% 时,才会发生 HDD 故障。
如何在消息正文中包含声明的变量(此处
@hdd
和)?@ram
如果硬盘使用率低于 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";