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')为单位