E-mail para executar um script bash

3

Eu tenho um script bash para reiniciar um serviço que é executado a cada três horas para garantir que o serviço não seja danificado quando os usuários o solicitarem. No entanto, preciso fornecer uma maneira mais simples para o meu parceiro (que não é da área de TI) executar esse script quando algo der errado.

Existe alguma maneira de configurar este script para ser executado quando um email é enviado para algum endereço?

    
por João Daniel 20.04.2012 / 15:53

3 respostas

3

Absolutamente!

Em seu arquivo / etc / aliases, faça isso:

servicerestart: |/usr/local/bin/kickservice

... onde o email será enviado para [email protected] e o script que você escreveu é o caminho acima. O e-mail e todos os cabeçalhos serão passados para o stdin do seu script, que você pode processar conforme necessário (procure por senha, etc.)

    
por 20.04.2012 / 16:07
2

Se o MTA obedecer a um arquivo ~ / .forward, você poderá ter o procmail processando o e-mail recebido e executando um script assim que como a mensagem chega.

Veja o link

Para uma das minhas contas, tenho o seguinte ~ / .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
    
por 20.04.2012 / 16:17
1

Absolutamente.

Você precisa:

  • um MTA para receber esses e-mails,
  • um processador para processar o correio,
  • regras e restrições para garantir que não possam ser abusadas (facilmente)

Com base nos requisitos, eu aconselho postfix como o MTA; Ele tem recursos internos para executar scripts na recepção de mensagens, além de configurar facilmente as restrições na recepção e conectividade de e-mail.

Naturalmente, a maioria dos administradores de sistemas apenas configuraria o cron .

    
por 20.04.2012 / 15:58