4

システムがシャットダウンしようとしているときに電子メール ID に電子メールを送信したいと考えています。CentOS 6.4 を使用しています。以下は私のスクリプトです。

cat /ect/init.d/sendshtmail

#!/bin/bash

EMAIL="example@example.com"
SHUTDOWNSUBJECT="["`hostname`"] - System Shutdown"


SHUTDOWNBODY="This is an automated message to notify you that "`hostname`" is shutting down.

LOCKFILE=/var/lock/subsys/SystemEmail
echo "${SHUTDOWNBODY}" | mutt -s "${SHUTDOWNSUBJECT}" ${EMAIL}

適切な権限があります。手動で実行している間、完全に機能しています。/etc/rc0.d/ フォルダーにシンボリックリンクしました。以下のコマンドを発行します。

 ln -s /etc/init.d/sendshtmail /etc/rc0.d/K00sendshtmail

しかし、スクリプトはシャットダウン中に電子メールを送信していません。前もって感謝します。

4

3 に答える 3

14

シェル スクリプトを /etc/init.d に配置し、実行権限を付与します。シンボリック リンク名は K## で始まる必要があります。シャットダウン直後に最初にスクリプトを実行する場合は、K00scriptname という名前を付けます。スクリプトが開始され、K が最初に昇順で実行され、次に S でスクリプトが実行されます。

ln -s /etc/init.d/script /etc/rc0.d/K00scriptname

シャットダウン コマンドは停止信号をスクリプトに送信します。スクリプト (K00scriptname) には、例のような停止機能が必要です。

stop()
{
  echo "executing scriptname"
  "Your script logic"
}
case "$1" in
  stop)
    stop
    ;;
esac

最も重要なことは、K00scriptname は /var/lock/subsys フォルダーにロック ファイルが存在する場合にのみ実行されるため、"touch /var/lock/subsys/scriptname" を実行し、シャットダウンして確認することです。

于 2014-03-20T19:16:53.077 に答える
1

スクリプトに実行権限を設定してみてください。アクティブ化するために、それを行う必要がある場合があります。

chmod 755 /etc/init.d/sendshtmail

また、他の変数も引用しながら、コマンドに絶対パスを使用するようにしてください。

echo "${SHUTDOWNBODY}" | /usr/bin/mutt -s "${SHUTDOWNSUBJECT}" "${EMAIL}"

別の試みは、ユーザーを現在のユーザーに切り替えることです。

echo "${SHUTDOWNBODY}" | su -l -c "/usr/bin/mutt -s \"${SHUTDOWNSUBJECT}\" \"${EMAIL}\"" yourusername
于 2013-09-19T09:45:15.020 に答える