harold@ubvax.UUCP (Harold Cook) (07/13/85)
Does anyone have (or know of) a daemon which will monitor users idle time, and logout any user idle longer than a given amount of time. We have recently had troubles with too many people and not enough ports, especially when there are ports where people have left terminals for extended periods of time. Please respond via mail and as usual, I will summarize for the net. Many thanks in advance --
rbp@investor.UUCP (Bob Peirce) (07/17/85)
> Does anyone have (or know of) a daemon which will monitor users idle time, > and logout any user idle longer than a given amount of time. > Please respond via mail and as usual, I will summarize for the net. Sorry, I don't have a path to you, but this works on SYS III. I use it as part of my el-cheapo, one modem both ways set-up. Stick it in cron to run every once in a while. You may want to modify this to handle several lines. # -- ckmod # Robert B. Peirce; Cookson, Peirce & Co., Inc. # If anyone is inactive on a modem > $GRACE minutes log them off # This version gives no quarter. # Have to look for hung outgoing uucp stuff too. if [ $# -ne 1 ] then echo "usage: ckmod tty#" exit 1 fi MODEM=$1 GRACE=15 # minutes of no activity HM=/usr/lib/uucp LOG=/u/rbp/kill.log SPOOL=/usr/spool/uucp cd $HM # If set doesn't produce anything, force it. set `who | grep tty$MODEM || echo XXX` U=$1 if [ $U = XXX ] then U="" fi # Get current time set `date | tr ":" " "` M=$2 D=$3 HC=$4 MC=$5 # Get time device last accessed set `/usr/ucb/ls -l /dev/tty$MODEM | tr ":" " "` HL=$8 ML=$9 # Check for midnight crossover if [ $HL -gt $HC ] then HL=`expr $HL + 24` fi # Calculate time since last access of device TIME=`expr \( 60 "*" $HC + $MC \) - \( 60 "*" $HL + $ML \)` if [ $U ] then if [ $TIME -ge 1 ] then echo "$U tty$MODEM ($M $D $HC:$MC $HL:$ML) $TIME minutes.\c"\ >> $LOG if [ $TIME -lt $GRACE ] then echo >> $LOG fi fi if [ $TIME -ge $GRACE ] then # Let him have it P=`ps -ft$MODEM | awk 'BEGIN{FS=" "}/'$U'/{print $2;exit}'` if [ $P ] then kill -9 $P echo " Killed after $TIME minutes." >> $LOG else echo >> $LOG fi fi else # Nobody logged on from outside LCK=`ls $SPOOL | egrep "LCK\.\..|.lock"` # locks placed in uucp if [ "$LCK" -a $TIME -ge $GRACE ] # uucp has hung then cd $SPOOL rm -f $LCK fi fi -- Bob Peirce uucp: ...!{allegra, bellcore, cadre, idis} !pitt!darth!investor!rbp
rbp@investor.UUCP (Bob Peirce) (07/17/85)
> # -- ckmod > # Check for midnight crossover > if [ $HL -gt $HC ] > then > HL=`expr $HL + 24` > fi Peirce, you're an idiot. If HL is already greater than HC, adding 24 hours isn't going to help! Change that to HC=`expr $HC + 24`. Then, in the next calculation you have a shot at finding a time difference when midnight is overlapped. -- Bob Peirce uucp: ...!{allegra, bellcore, cadre, idis} !pitt!darth!investor!rbp