kir*_*bnl 3 mail perl sendmail
我在这里共享一个 perl 脚本,它应该在邮件正文中发送带有 HDD/RAM 状态的邮件:此外,只有当 %HDD 使用率高于 50% 时才会发生 HDD 输出。
如何在消息正文中包含声明的变量(此处@hdd和@ram)?
如果硬盘使用率低于 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)
如果问题有点宽泛,请原谅我。但作为初学者,请善待它。
使用双引号",而不是单引号'的$message。您阻止了变量/数组的扩展。
$message = "The % HDD usage is @hdd and the % RAM usage is @ram";
Run Code Online (Sandbox Code Playgroud)