Program to log off idle users
Craig Campbell
craig at attcan.UUCP
Sat Oct 13 07:50:52 AEST 1990
James, I tried to mail you this response, but it bounced.
This may be of interest to you since you seem to be working on an idle user
watchdog on a SYS-V unix. (Hope so...)
In article <94@ dlss2.UUCP> you write:
In article <1990Oct4.135333.19139 at warwick.ac.uk> cudcv at warwick.ac.uk (Rob McMahon) writes:
I'm guessing a bit at this script, because it's full of SystemV-ism's, and
this article is not about critising code, but ...
In article <9800001 at hpbbi4.BBN.HP.COM> eugen at hpbbi4.BBN.HP.COM (#Eugen Bauknecht) writes:
who -u | awk '{print $2,$6}' > /tmp/kltmp0
(Sorry what's who -u ? Is this a System-V ism ? I'll assume $2 is the
terminal, and $6 is the `idle time', got by checking the mtime & atime of the
tty).
who -u is a shell method of finding not only who is on, but the
amount of "idle" time and their process id, etc. System-V ism?? could be
but I believe I've seen it on other systems also, not all but (again I
think) some BSDs (newer versions maybe?). At anyrate it is NOT a sure fire
way to gauge "idleness". I wrote, and haven't finished smoothing out some
of the edges on, a C implementation that looks directly at the utmp file
for struct utmp.ut_type equal to "7"(a USER_PROCESS) and guages time by
calling stat() against the utmp.ut_line (tty line) for last modified time.
As I understand it, the who -u shell command can be fooled(fact) by even
a loop which echos a bell character to the screen, but this method requires(?)
keyboard input to change the modify time.
Systems that do not support the utmp file or don't allow access to
it would have to take a totally different approach. I'd be interested,
just for the knowledge, to know how this would be implemented without a utmp.
Are you familiar with layers? This product has the side effect of making a
terminal appear idle when it is not. Layers changes your tty device to
something of the form /dev/xt??# where #={1,2,3,4,5,6,7}. Who will indicate
that you are (by default) logged into /dev/xt??1. This can be changed, but
the problem remains that you have 7 potential windows, each of which is a
valid "terminal" which may be in use. If you log off the user on the
/dev/tty?? device, layers will be killed, all the users windows will fail,
and the terminal will probably need to a hard-reset.
If you are unfamiliar with layers, please feel free to contact me and I will
forward you any useful info I can. I beleive your auto log off program can
account for layers (if it doesn't already).
Good luck,
craig
More information about the Comp.unix.admin
mailing list