邮件命令执行作为消息体传入的字符串内部的命令

时间:2015-10-23 18:36:51

标签: bash unix sh sendmail

我有一个脚本,使用ps -ef和一些grep检查进程是否正在运行。如果进程正在运行,它什么都不做。如果进程没有运行,它会重新启动进程,然后向我发送一封电子邮件,说明进程已经死亡。

此脚本目前从管理员帐户的crontab运行5分钟。

Peusdocode +问题代码:

#!/bin/sh

# declare a ton of environment variables.
ATONOFVARS=/lots/of/qualified/paths

# declare relevant logging functions
loggingFunction()

# declare failure message to pass into mail  (real code)
PAGEMESSAGE="MyServer: process not found in ps -ef.  Attempting to Restart... Please check log file in /tmp"
PAGESUBJECT="ProcessHealthCheck.sh - MyServer: process not found in ps -ef"
EMAILLIST="my.email@mycorp.com"

# do the actual check (back to peusdo code)
if [ $(ps -ef | grep process | grep adminAccount | grep -v grep | wc -1) ]
    restartProcess()
    FAILURE=1
fi

# log the failure and send an email to me (real code)
if [ $FAILURE -eq 1 ]
    then
        logMsg ""
        logMsg "The process is not detected in ps -ef!"
        logMsg "Restarting..."
        logMsg ""

        #send emails out
        echo $PAGEMESSAGE | mail -s $PAGESUBJECT $EMAILLIST
fi

为了测试这个,我故意杀死了我想监视的进程的PID,所以这个cronjob必须重新启动它,我还想测试电子邮件功能。该脚本完全按照我的意愿重新启动我的进程,然后收到电子邮件。

然而,电子邮件在邮件正文中说:“MyServer:process not found in the entire listing of ps -ef。尝试重新启动...请检查/ tmp中的日志文件。此外,电子邮件发送到的地址也是来自ps -ef的行。在我的电子邮件中有2000个收件人。示例地址:{{ 1}},grep@myServer.mydomain.com

有谁知道最近发生了什么?为什么process@myServer.mydomain.com执行字符串中的命令?由于发现了这一点,我更改了字符串以消除unix命令的任何可能性。

0 个答案:

没有答案