função CentOS bashrc para enviar e-mail no login

0

Eu tenho uma configuração do sistema onde um email é enviado em um login de usuário (linha de .bashrc):

printf "user details, ip etc" | mail -s "[LOGIN NOTICE] 'hostname' - 'whoami'" <admin>@<domain>.co.uk

Isso funciona, estou procurando torná-lo um pouco mais inteligente. ele será enviado por e-mail em qualquer login, mesmo em uma transferência SCP. Alguém pode sugerir como posso detectar e excluir SCP ou TTY, etc.

Obrigado antecipadamente

    
por fir3x 20.01.2015 / 11:37

1 resposta

0

.bashrc é originado sempre que um novo shell é iniciado - independentemente de o shell é interativo, um sub-shell de um shell Bash existente, etc. Eu presumo que o que você quer é verificar se o shell de login está ou não interativo ou não:

if [[ $- == *i* ]]; then
    printf "user details, ip etc" | mail -s "[LOGIN NOTICE] 'hostname' - 'whoami'" <admin>@<domain>.co.uk
fi

Uma maneira portátil (não específica do Bash) para verificar se o shell sendo iniciado é interativo ou não seria:

case "$-" in
    *i*)    printf "user details, ip etc" | mail -s "[LOGIN NOTICE] 'hostname' - 'whoami'" <admin>@<domain>.co.uk
esac

Consulte o manual do GNU Bash .

Esta pergunta do Unix e Linux Stack Exchange também tem algumas respostas relevantes.

    
por 20.01.2015 / 13:46