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
すべての要件を満たす1つのメールが必要な場合は、次のものを使用できます。
>/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」)で表示されるようにしたいです。