我有一个系统设置,当用户登录时会发送电子邮件(来自 .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
这Unix 和 Linux Stack Exchange 问题也有一些相关的答案。