ユーザーがログインしたことを1分ごとに確認するためにこのプログラムを作成しました。
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 ファイルを確認してください。これには、ユーザーログインの履歴データが含まれます。