: ########################################################################## # Shellscript: whodo - who is doing what # Version : 0.1 (beta) # Author : Heiner Steven (heiner.steven@odn.de) # Date : 26-04-95 # Category : System Administration # SCCS-Id. : $Id: whodo,v 1.1.1.1 1999/06/15 19:29:05 heiner Exp $ ########################################################################## # Description # Show who is logged on and what he is doing. # This program works like the System V "whodo" command. ########################################################################## PN=`basename $0` # program name VER='0.1 (beta)' Usage () { echo "$PN - who is doing what, $VER (stv '95) usage: $PN [-l] [-h] [user] -h: suppress the heading -l: long form of output" >&2 exit 1 } Msg () { for i do echo "$PN: $i" >&2 done } Fatal () { Msg "$@"; exit 1; } LongOutput=no Header=yes while [ $# -gt 0 ] do case "$1" in -l) LongOutput=yes;; -h) Header=no;; --) shift; break;; -*) Usage;; *) break;; # First file name esac shift done [ $# -gt 0 ] && User="$1" if [ "$LongOutput" = no ] then [ $Header = yes ] && { date uname -n } # Sample output of who: # heiner console Apr 26 08:18 who | while read Name Tty Mon Day Time Host Rest do [ -n "$User" -a "$User" != "$Name" ] && continue echo " $Tty $Name $Time" case "$Tty" in *tty*) T=`echo "$Tty" | sed -e 's:.*tty\(..\).*:\1:'`;; *) T=`echo "$Tty" | sed -e 's:/dev/\(..\).*:\1:'`;; esac # Sample output of ps -c: # PID TT STAT TIME COMMAND # 327 p2 IW 0:19 ksh ps -ct"$T" | tail +2 | while read pid tty stat time command do echo " $Tty $pid $time $command" done done else # Long form: use "w" output format if [ $Header = yes ] then FirstLine=1 else FirstLine=3 fi if [ -z "$User" ] then w else w | grep "$User" fi | tail +$FirstLine fi