Hi
i want to display the users who loged in within 5 minutes in unix
by
roshni
Hi
i want to display the users who loged in within 5 minutes in unix
by
roshni
What is the OS?
lorcan
The who command gives time when the user logged in.
$ LANG=C who -s
gssjgu:/g/g00k00/gssjgu/TMP> LANG=C who -s
gssjgu pts/1 Jul 4 15:06 (1.1.1.11)
getk00 pts/2 Jul 4 08:54 (1.1.1.2)
gti001 pts/3 Jun 22 15:38 (1.1.1.39)
$
The following script display informations about users who logged in since n minutes (n can be specified as a parameter of the script, the defaut value is 5).
$ cat log5.sh
#!/usr/bin/ksh
typeset -i SINCE=${1:-5}
#
# Get current date
#
date '+%Y +%m %d %H %M' | read year month day hour min
#
# Compute timestamp for current date minus $SINCE minutes
# format 'mmddHHMM' ('cal' command usage)
#
(( min -= SINCE ))
(( min < 0 )) && { (( min += 60 )) ; (( hour -= 1 )) }
(( hour < 0 )) && { (( hour += 24 )) ; (( day -= 1 )) }
(( day <= 0 )) && {
(( month -= 1 ))
(( month <= 0 )) && { (( month=12 )) ; (( year -= 1 )) }
day=$(cal $month $year | tr '\n' ' ' | awk '{print $NF}')
}
ts5=$(printf "%02d%02d%02d%02d" $month $day $hour $min)
#
# Determine users logged on since $SINCE minutes
# (Based on 'who -s' command)'
#
LANG=C who -s |
awk -v ts5="$ts5" -F '[ \t:]*' '
function to_timestamp(month, day, hour, min) {
m = index("___,jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec,", "," tolower(month) ",")/4;
return sprintf("%02d%02d%02d%02d", m, day, hour, min);
}
to_timestamp($3, $4, $5, $6) >= ts5
'
$
Output:
$ LANG=C date
Wed Jul 4 15:22:04 DFT 2007
$ log5.sh
$ log5.sh 30
gssjgu pts/1 Jul 4 15:06 (1.1.1.11)
$
last command will give you the last logins including any current login.
Try using the -n option for last n logins
last -n
Last searches back through the file /var/log/wtmp (or the file designated
by the -f flag) and displays a list of all users logged in (and out) since that file was created. Names of users and tty's can be given, in which case last will show only those entries matching the arguments.
Check out the man page for last.