CentOS bashrc 函数用于登录时发送电子邮件

CentOS bashrc 函数用于登录时发送电子邮件

我有一个系统设置,当用户登录时会发送电子邮件(来自 .bashrc 的行):

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

这很有效,我希望让它更智能一些。它会在任何登录时发送电子邮件,即使是在 SCP 传输时。有人能建议我如何检测和排除 SCP 或 TTY 等吗?

提前致谢

答案1

.bashrc每当启动一个新 shell 时都会获取该信息 - 无论该 shell 是交互式的、还是现有 Bash shell 的子 shell 等等。我假设您想要检查登录 shell 是否是交互式的:

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

检查正在启动的 shell 是否是交互式的,一种可移植的(非 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 问题也有一些相关的答案。

相关内容