运行 bash 脚本的电子邮件

运行 bash 脚本的电子邮件

我有一个 bash 脚本,用于重新启动每凌晨 3 点运行一次的服务,以确保用户需要时该服务不会崩溃。但是,我需要为我的合作伙伴(不是 IT 领域的)提供一种更简单的方法,以便在出现问题时运行此脚本。

有什么方法可以配置此脚本,使其在电子邮件发送到某个地址时运行?

答案1

绝对地!

在您的 /etc/aliases 文件中,执行以下操作:

servicerestart: |/usr/local/bin/kickservice

... 电子邮件将被发送到哪里[email protected],您编写的脚本就是上面的路径。电子邮件和所有标题将被传递到stdin您的脚本,您可以根据需要对其进行处理(查找密码等)

答案2

如果 MTA 遵循 ~/.forward 文件,那么你可以进程邮件处理收到的邮件并在邮件到达时立即运行脚本。

http://www.panix.com/~elflord/unix/procmail.html

对于我的一个帐户,我有以下 ~/.procmailrc

# procmail tutorial: http://tldp.org/LDP/LG/issue14/procmail.html

PATH=/usr/local/bin:/bin:/usr/bin
MAILDIR=$HOME/Mail
DEFAULT=$HOME/Mail/inbox
LOGFILE=$HOME/procmail.`date +%Y-%m`.log
SHELL=/usr/bin/ksh

MY_XLOOP='X-Loop: [email protected]'
MY_RECIPIENT='[email protected]'


#############################################################################
# 3rd party request processing
# send a copy of the message to the processing script, and carry on
# with the next recipe

:0c
* ^From:.*@3rdparty\.invalid
* ^Subject:.*ABC/DEF.*(Request|Access|Approval)
| $HOME/bin/process_request_email.pl | \
  mailx -s "3rd party request results" $MY_RECIPIENT


#############################################################################
# forward all mail to mailing list
:0
* ! ^$MY_XLOOP
{
    # add a header
    # 'f' = filter: continue processing results of program
    # 'w' = wait for program to return
    # 'h' = pass message headers to program
    :0fwh
    | formail -A "$MY_XLOOP"

    # then forward the message
    # 'c' = send a copy to recipient and continue processing
    :0c
    ! $MY_RECIPIENT
}

# if we get here, then the message has an X-Loop header.
# let it fall into $DEFAULT

答案3

绝对地。

你需要:

  • 一个 MTA 来接收这些邮件,
  • 处理邮件的处理器,
  • 规则和限制,以确保它不会被轻易滥用

根据要求,我建议后缀作为 MTA;它具有在接收消息时执行脚本的内置功能,并且易于配置对邮件接收和连接的限制。

当然,大多数系统管理员只会配置计划任务

相关内容