Назад | Перейти на главную страницу

Электронная почта для запуска сценария bash

У меня есть сценарий bash для перезапуска службы, которая запускается каждые 3 часа ночи, чтобы гарантировать, что служба не выйдет из строя, когда это потребуется пользователям. Однако мне нужно предоставить моему партнеру (не из области ИТ) более простой способ запуска этого скрипта, когда что-то пойдет не так.

Есть ли способ настроить этот скрипт для запуска при отправке электронного письма на какой-либо адрес?

Абсолютно!

В вашем файле / etc / aliases сделайте следующее:

servicerestart: |/usr/local/bin/kickservice

... куда будет отправлено письмо servicerestart@yourdomain.com а сценарий, который вы написали, - это путь, указанный выше. Электронное письмо и все заголовки будут переданы в stdin вашего скрипта, который вы можете обработать по мере необходимости (ищите пароль и т. д.)

Если MTA подчиняется файлу ~ / .forward, вы можете procmail обрабатывать входящую почту и запускать сценарий, как только приходит сообщение.

Видеть 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: user@example.com'
MY_RECIPIENT='mailing_list@example.com'


#############################################################################
# 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

Абсолютно.

Тебе нужно:

  • MTA для получения этих писем,
  • процессор для обработки почты,
  • правила и ограничения, чтобы гарантировать, что им нельзя злоупотреблять (легко)

Исходя из требований, я бы посоветовал постфикс как MTA; он имеет встроенные возможности для выполнения сценариев при приеме сообщений, а также легко настраиваемые ограничения на получение почты и возможность подключения.

Конечно, большинство системных администраторов просто настроят cron.