当所有文件系统使用率 >90% 时在 Solaris 中实现一个脚本并发送邮件我不知道如何从脚本发送邮件

当所有文件系统使用率 >90% 时在 Solaris 中实现一个脚本并发送邮件我不知道如何从脚本发送邮件

Solaris 中的脚本,当所有文件系统的使用率 >90% 并发送邮件时,我不知道如何从脚本发送邮件

#!/bin/bash
# Outputs alert if filesystem is above 90%
{
        for fs in $(df -hk | awk '{print $6}' | sed '1 d'); do
                chk=$(df -hk ${fs} | sed '1 d' | awk '{print $5}' | awk -F\% '{print $1}')
                if [ ${chk} -gt ${threshold} ]; then
                        echo "$(hostname): Alert Fileystem ${fs} is above ${threshold}%."
                fi
        done

它正在变得“预期一元运算符”。

答案1

if命令中,您应该在变量周围添加双引号。并检查这些变量是否已分配给它们:

 if [ "${chk}" -gt "${threshold}" ]; then

要发送邮件,您可以echo通过这种方式使用命令

echo "$(hostname): Alert Fileystem ${fs} is above ${threshold}%."|mail user@host

如果您想要一封邮件满足所有要求,您可以使用以下内容:

>/tmp/output
for fs in $(df -hk | awk '{print $6}' | sed '1 d'); do
chk=$(df -hk ${fs} | sed '1 d' | awk '{print $5}' | awk -F\% '{print $1}')
if [ "${chk}" -gt "${threshold}" ]; then
  echo "$(hostname): Alert Fileystem ${fs} is above ${threshold}%." >>/tmp/output
fi
done
cat /tmp/output|mailx -s "Subject" username@host

编辑1:还有一点,命令df -hk有点无意义,您希望同时结果为人类可读格式('h')并以千字节('k')为单位

相关内容