У меня есть настройки системы, когда электронное письмо отправляется при входе пользователя (строка из .bashrc):

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

Это работает, я хочу сделать это немного умнее. он отправит письмо по электронной почте при любом входе в систему, даже при передаче SCP. Может кто-нибудь подсказать, как я могу обнаружить и исключить SCP или TTY и т.д.

заранее спасибо

1 ответ1

0

.bashrc поставляется каждый раз при запуске новой оболочки - независимо от того, является ли оболочка интерактивной, под-оболочкой существующей оболочки Bash и т. д. Я предполагаю, что вы хотите проверить, является ли оболочка входа в систему интерактивной или нет:

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

Переносимый (не специфичный для Bash) способ проверить, является ли запускаемая оболочка интерактивной или нет:

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

Смотрите руководство по GNU Bash.

На этот вопрос о Unix и Linux Stack Exchange также есть несколько соответствующих ответов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .