Solarisでスクリプトを実装し、すべてのファイルシステム使用率が90%を超えるとメールを送信します。スクリプトからメールを送信する方法がわかりません。

Solarisでスクリプトを実装し、すべてのファイルシステム使用率が90%を超えるとメールを送信します。スクリプトからメールを送信する方法がわかりません。

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」)で表示されるようにしたいです。

おすすめ記事