在退出之前发送电子邮件的shell脚本

时间:2014-09-01 05:46:38

标签: shell amazon-ec2

我正在尝试编写一个shell脚本,在退出之前会向我发送一封电子邮件

因为我在亚马逊ec2 DEBAIN现场请求上运行此操作,它应该在实例终止之前向我发送电子邮件

            #!/bin/bash
            sendEmailLog()
            {
            emailLog=true
               if [ $emailLog = "true" ];then
                    /usr/bin/mpack -s "emailed log" -a "/srv/log.html" "emailid@gmail.com";
               fi
               exit 0;
            }

            trap sendEmailLog INT TERM EXIT KILL QUIT

            aws ec2 terminate-instances instances ID

我尝试了上面的代码,它在终止之前没有给我发送电子邮件 我正在使用DEBAIN 7

1 个答案:

答案 0 :(得分:1)

我想你可能有几个问题。我对mpack并不是很熟悉,但看起来你的语法是正确的(除了&#34 ;;"最后)。在下面进行一些更改,看看它是否有帮助。

我会使用引号来定义你的emailLog字符串,虽然它并不是很清楚你为什么要使用字符串作为布尔语句,据我所知,你想要总是运行。除非您想获得错误代码。

 emailLog="true"

要检查是否相等,请使用两个==:

if [ $emailLog == "true" ]; then

正如我所说,&#39 ;;'是多余的。

如果我要重写它,我会这样写:

sendEmailLog() {
    /usr/bin/mpack -s "emailed log" -a "/srv/log.html" "emailid@gmail.com" && exit 1
    exit 0
}

trap sendEmailLog SIGINT SIGTERM SIGKILL

aws ec2 terminate-instances instances ID