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

将您的 shell 脚本放在具有可执行权限的 /etc/init.d 中,符号链接名称应以 K## 开头。如果你想在关机后立即执行你的脚本,那么用 K00scriptname 命名它。启动的脚本将首先按照升序执行 K,然后执行带有 S 的脚本。

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

Shutdown 命令将向脚本发送停止信号,您的脚本(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 回答
0

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

符号链接名称应以 S 开头 - 表示开始(K 表示终止)

两位数指定脚本的执行顺序,编号最小的先执行。

于 2013-09-19T10:48:46.470 回答