next up previous contents
Next: Functions Up: More shell script examples Previous: Backing up only files   Contents

Watching if a user logs in or logs out

The following script watches if a certain user logs in or out of the system. An example use:

watchuser amit 10

which will watch if amit logs in or out every 10 seconds.

#!/bin/sh
# others/watchuser

case $# in
0) echo 'Usage: ' $prog '<username> <check interval(secs)>'; exit 1;;
esac

name=$1
if test "$2" = ""
then
    interval=60
else
    interval=$2
fi

who | awk '{print $1}' | grep $name >& /dev/null
if test "$?" = "0"
then
    loggedin=true
    echo $name is logged in
else
    loggedin=false
    echo $name not logged in
fi

while true
do
    who | awk '{print $1}' | grep $name >& /dev/null
    if test "$?" = "0"
    then
        if test "$loggedin" = "false"
        then
            loggedin=true
            echo $name is logged in
        fi
    else
        if test "$loggedin" = "true"
        then
            loggedin=false
            echo $name not logged in
        fi
    fi
    sleep $interval
done



Amit Jain 2006-11-20