【问题标题】:shell script that send email before exiting退出前发送电子邮件的 shell 脚本
【发布时间】:2014-10-25 07:24:18
【问题描述】:

我正在尝试编写一个 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

【问题讨论】:

    标签: shell amazon-ec2


    【解决方案1】:

    我认为您可能有几个问题。我对 mpack 不是很熟悉,但看起来你的语法是正确的(除了最后的“;”)。在下面进行一些更改,看看是否有帮助。

    我会使用引号定义您的 emailLog 字符串,尽管目前尚不清楚为什么您使用字符串作为布尔语句,据我所知,您希望始终运行。除非你想得到错误代码。

     emailLog="true"
    

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

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

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

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

    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
    

    【讨论】:

    • 您确定您的mpack 命令有效吗?您是否从命令行尝试过?仔细观察,-a 似乎不是受支持的开关。
    • 是的,我确信它可以在命令行中与 -a 一起使用,它的工作完美
    • 这是我在 man mpack -a 将 Content-Disposition 设置为附件后得到的。如果未使用 -a,则 Content-Disposition 是内联的。
    • 该命令成功地向亚马逊实例所需的地址发送了一封电子邮件。对吗?
    • 是的,它在命令行中成功向我发送了一封电子邮件,但是当我终止系统时它的 dosnt 工作..mpack 非常适合我.. 并且使用 SIGINT 给我一个错误(陷阱:SIGINT:错误陷阱(
    猜你喜欢
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多