我想在系统关闭电子邮件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
但是脚本在关机期间没有发送任何电子邮件。在此先感谢。
答案 0 :(得分:13)
将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
最重要的是,只有在/ var / lock / subsys文件夹中存在锁定文件时才会执行K00scriptname,所以请执行“touch / var / lock / subsys / scriptname”,然后通过关闭来检查。强>
答案 1 :(得分: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
答案 2 :(得分:0)
ln -s /etc/init.d/sendshtmail /etc/rc0.d/S01sendshtmail
符号链接名称应以S - 开头(K for Kill)
开头两位数指定脚本的执行顺序,编号最小的是先执行。