我创建了这个程序来查看用户是否登录并且每分钟检查一次。
if [ "$#" -ne 1 ]
then
echo "Usage: mon user"
exit 1
fi
user="$1"
until who | grep "^$user " > /dev/null
do
sleep 60
done
echo "$user has logged on"
但我的问题是如何修改这个程序来查看用户是否已注销而不是登录?
感谢您提供的任何帮助!非常感激。
答案1
尝试这个。
#!/bin/bash
[ "$#" -ne 1 ] && {
echo "Usage: $(basename $0) user"
exit 1
}
user="$1"
grep "^$user:" /etc/passwd > /dev/null || {
echo "There's no user called $user in this system."
exit 2
}
who | grep "^$user " > /dev/null && sleep 60
echo "$user has logged out"
答案2
您可以过滤安全日志文件(假设您只是检查远程登录)。安全日志文件会告诉您用户何时登录和注销。另请检查 lastlog 命令以及 wtmp 和 utmp 文件。它们将包含用户登录的历史数据。