head	1.70;
access;
symbols;
locks
	ids:1.70; strict;
comment	@# @;


1.70
date	2000.07.10.15.49.05;	author ids;	state Exp;
branches;
next	1.69;

1.69
date	99.10.20.20.46.21;	author ids;	state Exp;
branches;
next	1.68;

1.68
date	99.07.13.16.56.12;	author ids;	state Exp;
branches;
next	1.67;

1.67
date	99.04.22.21.23.12;	author ids;	state Exp;
branches;
next	1.66;

1.66
date	99.04.22.19.47.12;	author ids;	state Exp;
branches;
next	1.65;

1.65
date	98.08.30.19.10.47;	author ids;	state Exp;
branches;
next	1.64;

1.64
date	97.10.11.21.00.08;	author ids;	state Exp;
branches;
next	1.63;

1.63
date	96.10.25.15.16.41;	author ids;	state Exp;
branches;
next	1.62;

1.62
date	96.10.24.14.54.10;	author ids;	state Exp;
branches;
next	1.61;

1.61
date	96.10.23.19.11.52;	author ids;	state Exp;
branches;
next	1.60;

1.60
date	96.10.23.18.50.22;	author ids;	state Exp;
branches;
next	1.59;

1.59
date	96.10.09.10.06.12;	author ids;	state Exp;
branches;
next	1.58;

1.58
date	96.06.26.17.12.26;	author ids;	state Exp;
branches;
next	1.57;

1.57
date	96.06.26.10.35.10;	author ids;	state Exp;
branches;
next	1.56;

1.56
date	96.03.19.12.42.38;	author ids;	state Exp;
branches;
next	1.55;

1.55
date	96.03.01.18.52.50;	author ids;	state Exp;
branches;
next	1.54;

1.54
date	95.11.22.13.11.18;	author ids;	state Exp;
branches;
next	1.53;

1.53
date	95.10.15.16.23.49;	author ids;	state Exp;
branches;
next	1.52;

1.52
date	95.09.27.15.33.14;	author ids;	state Exp;
branches;
next	1.51;

1.51
date	95.09.06.21.49.18;	author ids;	state Exp;
branches;
next	1.50;

1.50
date	95.09.06.18.21.00;	author ids;	state Exp;
branches;
next	1.49;

1.49
date	95.09.05.19.31.09;	author ids;	state Exp;
branches;
next	1.48;

1.48
date	94.10.02.11.32.00;	author ids;	state Exp;
branches;
next	1.47;

1.47
date	94.10.01.16.09.15;	author ids;	state Exp;
branches;
next	1.46;

1.46
date	94.09.16.10.10.26;	author ids;	state Exp;
branches;
next	1.45;

1.45
date	94.09.15.11.47.19;	author ids;	state Exp;
branches;
next	1.44;

1.44
date	94.09.14.21.17.31;	author ids;	state Exp;
branches;
next	1.43;

1.43
date	94.09.14.21.11.51;	author ids;	state Exp;
branches;
next	1.42;

1.42
date	94.09.14.19.30.01;	author ids;	state Exp;
branches;
next	1.41;

1.41
date	94.09.14.19.27.52;	author ids;	state Exp;
branches;
next	1.40;

1.40
date	94.09.14.19.24.32;	author ids;	state Exp;
branches;
next	1.39;

1.39
date	94.09.14.14.59.33;	author ids;	state Exp;
branches;
next	1.38;

1.38
date	94.09.14.11.49.18;	author ids;	state Exp;
branches;
next	1.37;

1.37
date	94.09.11.13.20.53;	author ids;	state Exp;
branches;
next	1.36;

1.36
date	94.09.10.17.42.08;	author ids;	state Exp;
branches;
next	1.35;

1.35
date	94.09.10.15.48.39;	author ids;	state Exp;
branches;
next	1.34;

1.34
date	94.09.10.15.30.23;	author ids;	state Exp;
branches;
next	1.33;

1.33
date	94.09.08.21.35.14;	author ids;	state Exp;
branches;
next	1.32;

1.32
date	94.07.28.18.14.05;	author ids;	state Exp;
branches;
next	1.31;

1.31
date	94.05.06.11.34.59;	author ids;	state Exp;
branches;
next	1.30;

1.30
date	93.11.29.18.58.59;	author ids;	state Exp;
branches;
next	1.29;

1.29
date	93.11.25.19.37.11;	author ids;	state Exp;
branches;
next	1.28;

1.28
date	93.02.06.20.27.04;	author ids;	state Exp;
branches;
next	1.27;

1.27
date	93.02.06.18.50.24;	author ids;	state Exp;
branches;
next	1.26;

1.26
date	93.01.18.12.07.54;	author ids;	state Exp;
branches;
next	1.25;

1.25
date	92.12.03.20.07.35;	author ids;	state Exp;
branches;
next	1.24;

1.24
date	92.12.03.11.35.21;	author ids;	state Exp;
branches;
next	1.23;

1.23
date	92.12.02.22.50.14;	author ids;	state Exp;
branches;
next	1.22;

1.22
date	92.12.02.22.45.35;	author ids;	state Exp;
branches;
next	1.21;

1.21
date	92.12.02.22.28.58;	author ids;	state Exp;
branches;
next	1.20;

1.20
date	92.12.02.22.16.50;	author ids;	state Exp;
branches;
next	1.19;

1.19
date	92.12.02.22.10.30;	author ids;	state Exp;
branches;
next	1.18;

1.18
date	92.12.01.20.13.35;	author ids;	state Exp;
branches;
next	1.17;

1.17
date	92.12.01.20.09.10;	author ids;	state Exp;
branches;
next	1.16;

1.16
date	92.12.01.20.01.13;	author ids;	state Exp;
branches;
next	1.15;

1.15
date	92.12.01.13.06.24;	author ids;	state Exp;
branches;
next	1.14;

1.14
date	92.11.30.22.55.06;	author ids;	state Exp;
branches;
next	1.13;

1.13
date	92.11.30.22.14.56;	author ids;	state Exp;
branches;
next	1.12;

1.12
date	92.11.30.21.24.06;	author ids;	state Exp;
branches;
next	1.11;

1.11
date	92.11.27.21.23.45;	author ids;	state Exp;
branches;
next	1.10;

1.10
date	92.11.27.21.05.00;	author ids;	state Exp;
branches;
next	1.9;

1.9
date	92.10.30.20.51.54;	author ids;	state Exp;
branches;
next	1.8;

1.8
date	92.10.13.20.49.00;	author ids;	state Exp;
branches;
next	1.7;

1.7
date	92.10.12.19.42.35;	author ids;	state Exp;
branches;
next	1.6;

1.6
date	92.10.01.11.35.15;	author ids;	state Exp;
branches;
next	1.5;

1.5
date	92.09.24.15.01.38;	author ids;	state Exp;
branches;
next	1.4;

1.4
date	92.09.24.14.59.10;	author ids;	state Exp;
branches;
next	1.3;

1.3
date	92.07.21.09.30.04;	author ids;	state Exp;
branches;
next	1.2;

1.2
date	92.06.20.17.35.16;	author ids;	state Exp;
branches;
next	1.1;

1.1
date	92.06.18.16.12.48;	author ids;	state Exp;
branches;
next	;


desc
@@


1.70
log
@filename rationalization tidyups.
@
text
@#!/bin/sh -
#
# comprehensive finger scan.
#
# WARNING: There are a lot of hosts at DoC. So this program inevitably creates
#  a lot of network traffic. Therefore:
#   * it is to be used sparingly, i.e. the odd manual usage (it's not to be
#     run in an automated loop, for example!);
#   * it is not to be installed in the lab area (the sheer number of even
#     individually infrequent users could then be a problem).
#
# usage: fscan [-]		(simply fingers each host in turn)
#	 fscan [-] -w		(does "w" on each host in turn)
#	 fscan [-] -s		(produces a listing sorted by user. Note that
#				  this uses rusers and thus depends on the
#				  cooperation of the rusers daemons.)
#	 fscan [-] -t		(tiny sorted listing of users, all on one line.
#				  Note that this uses rusers and thus depends
#				  on the cooperation of the rusers daemons.)
#	 fscan [-] -l <user>	(looks for all last login times of that user,
#				  using finger.)
#
# A *non-empty* host list in ~/.fscanrc will override the default host list,
# unless the option - is in use, in which case the default host list is
# always used.
#
umask 077	#privacy in /tmp
progname=`basename $0`


#
#	timeouts
#
finger_timeout=20
ssh_timeout=30
rusers_timeout=10


#
# get host list ready
#
try_fscanrc=TRUE #provisionally
if [ $# -ne 0 ]; then
  if [ "x$1" = "x-" ]; then
    shift ; try_fscanrc=FALSE
  fi
fi

if [ $try_fscanrc = TRUE -a -f $HOME/.fscanrc ]; then
  hosts=`sed 's/#.*$//' $HOME/.fscanrc`
  if [ -n "$hosts" ]; then
    echo "(Using host list in \"$HOME/.fscanrc\")" >&2
  else
    hosts=`sed 's/#.*$//' $LOCALLAB/lib/student_hosts.cf`
  fi
else
  hosts=`sed 's/#.*$//' $LOCALLAB/lib/student_hosts.cf`
fi


#
# prepare directory in /tmp (not actually used by all options)
#
temploc=/tmp/$progname.$$
tempstderr=$temploc/stderr.txt
tempstderrbyhost=$temploc/stderrbyhost.txt
temperrorhosts=$temploc/errorhosts.txt
trap "rm -rf $temploc ; exit 1" 1 2 3 15

rm -rf $temploc
mkdir $temploc
if [ $? -ne 0 ]; then
  echo "$progname: fatal error: funny business in /tmp" >&2
  exit 1
fi


#
# now determine what option is wanted.
#


if [ $# = 0 ]; then #just the huge scan!

  for host in $hosts ; do
    runprog -$finger_timeout finger @@$host
    if [ $? -eq 104 ]; then
      echo "***$progname: finger @@$host timed out" >&2
    fi
  done #for host

elif [ "x$1" = "x-w" ]; then #do "w" on each host in turn

  if [ $# != 1 ]; then
    echo $progname: -w option takes no further arguments >&2
    rm -rf $temploc
    exit 1
  fi

  for host in $hosts ; do
    echo "[$host.doc.ic.ac.uk]"
     #makes it look like a "finger @@<host>" output
    (
      runprog -$ssh_timeout ssh -n -x $host w -s
      if [ $? -eq 104 ]; then
        echo "***$progname: ssh -n -x $host w -s timed out" >&2
      fi
    ) | sed -e '1d' -e 's/[ 	][ 	]*[^ 	][^ 	]*[ 	][ 	]*/	/' | fingerize | sort
    #
    # (The sed above removes a part of the header that would get parsed in a
    #  meaningless and confusing way, and also removes the TTY info, to make it
    #  more likely the final output will fit into 80 columns.)
    #
  done #for host

elif [ "x$1" = "x-s" ]; then #listing sorted by user, using rusers

  if [ $# != 1 ]; then
    echo $progname: -s option takes no further arguments >&2
    rm -rf $temploc
    exit 1
  fi

  echo "Login       Name               Host         When        Idle Where"
  #the echo above gives the output the same flavour as finger
  (
    for host in $hosts ; do
      (
        runprog -$rusers_timeout rusers -l $host
        if [ $? -eq 104 ]; then
          echo "$progname: $host: rusers timed out" >&2
        fi
      ) 2> $tempstderrbyhost
      cat $tempstderrbyhost >&2

      if [ -s $tempstderrbyhost ]; then
        echo $host >> $temperrorhosts
      fi
    done | fingerize | sed 's/\.[^ 	]*:[^ 	]*[ 	][ 	]*/	/' | sort
    #the sed above removes the TTY info, to fit final output into 80 columns
  ) 2> $tempstderr
  sed 's/^/***/' $tempstderr >&2

  #
  #	Now, if any hosts gave errors, then try fingering them as an
  #	emergency measure. (Let's not worry about finger giving errors too!)
  #
  #	We use "ssh -n -x <host> finger", rather than "finger @@<host>",
  #	as there are now an awful lot of hosts with their finger daemon
  #	disabled.
  #
  if [ -s $temperrorhosts ]; then
    errorhosts=`cat $temperrorhosts`
    errorhosts=`echo $errorhosts`	#just to throw away multi-line layout!
    echo "($progname: fingering host(s) that gave errors: $errorhosts)"

    for errorhost in $errorhosts ; do
      echo "[$errorhost.doc.ic.ac.uk]"
       #makes it look like a "finger @@<host>" output
      (
        runprog -$ssh_timeout ssh -n -x $errorhost finger
        if [ $? -eq 104 ]; then
          echo "***$progname: ssh -n -x $errorhost finger timed out" >&2
        fi
      ) | sort
    done #for errorhost
  fi

elif [ "x$1" = "x-t" ]; then #tiny sorted listing of users, all on one line

  if [ $# != 1 ]; then
    echo $progname: -t option takes no further arguments >&2
    rm -rf $temploc
    exit 1
  fi

  (
    for host in $hosts ; do
      runprog -$rusers_timeout rusers $host
      if [ $? -eq 104 ]; then
        echo "$progname: $host: rusers timed out" >&2
      fi
    done | echo `sed 's/^[^ 	]*[ 	]//' | tr -s ' 	' '\012' | sort -u`
  ) 2> $tempstderr
  sed 's/^/***/' $tempstderr >&2

elif [ "x$1" = "x-l" ]; then #look for all last login times of the given user

  if [ $# != 2 ]; then
    echo $progname: -l option requires one username >&2
    rm -rf $temploc
    exit 1
  fi

  user=$2

  for host in $hosts ; do
    #
    #	We use "ssh -n -x $host finger $user", rather than "finger $user@@$host",
    #	as there are now an awful lot of hosts with their finger daemon
    #	disabled.
    #
    (
      (
        runprog -$ssh_timeout ssh -n -x $host finger $user
        if [ $? -eq 104 ]; then
          echo "***$progname: ssh -n -x $host finger $user timed out" >&2
        fi
      ) | egrep '^Last login |^On since '
    ) 2>&1 | sed "s/^/$user@@$host:	/"
  done #for host

else #illegal option!

  sed 's/^    //' << __here >&2
    usage: fscan [-]            (simply fingers each host in turn)
           fscan [-] -w         (does "w" on each host in turn)
           fscan [-] -s         (produces a listing sorted by user)
           fscan [-] -t         (tiny sorted listing of users, all on one line)
           fscan [-] -l <user>  (looks for all last login times of that user)
    (the - option means don't look for a personal host list in ~/.fscanrc).
__here
  rm -rf $temploc
  exit 1

fi


#
# final tidyup at end.
#
rm -rf $temploc
exit 0
@


1.69
log
@added -w option (does "w" on each host in turn).
@
text
@d65 2
a66 2
tempstderr=$temploc/stderr.res
tempstderrbyhost=$temploc/stderrbyhost.res
@


1.68
log
@rsh -> ssh, as recommended by Mark Dawson.
@
text
@d13 1
d92 24
d217 1
@


1.67
log
@bloody hell! we need to change things like

        if [ "$<VAR>" = "<WHATEVER>" ]; then

 to:

        if [ "x$<VAR>" = "x<WHATEVER>" ]; then

 (or analogous changes which achieve the same protective goal)
 now that our current Linux version of "test", alias "[", has become
 too clever by half and allows (quote from manual page)
 "the special expression `-l STRING', which evaluates to the length of STRING".
 (If $<VAR> in the unprotected example above happens to be "-l",
  the next argument ("=" above) is taken to be a string whose length is to
  be measured, and the parsing gets totally screwed up.)

[Note: in some files being dealt with in this checking-in, this revision message
 is essentially the same as in one or more previous revision(s).
 That's simply because I missed a few cases first time(s) round!]
@
text
@d15 1
a15 3
#				  cooperation of the rusers daemons.
#				  Further, the "emergency fingering" uses rsh
#				  and so Kerberos restrictions will apply.)
d20 1
a20 2
#				  using finger. Note that this uses rsh and so
#				  Kerberos restrictions will apply.)
d34 1
a34 1
rsh_timeout=30
d123 1
a123 1
  #	We use "rsh <host> -n finger", rather than "finger @@<host>",
a126 5
  #	We no longer bother to use an absolute pathname with rsh,
  #	as the rsh-path seems to no longer begin with ".",
  #	and in any case the rsh-current-directory is (harmlessly enough)
  #	the home directory.
  #
d136 1
a136 1
        runprog -$rsh_timeout rsh $errorhost -n finger
d138 1
a138 1
          echo "***$progname: rsh $errorhost -n finger timed out" >&2
d174 1
a174 1
    #	We use "rsh $host -n finger $user", rather than "finger $user@@$host",
a177 5
    #	We no longer bother to use an absolute pathname with rsh,
    #	as the rsh-path seems to no longer begin with ".",
    #	and in any case the rsh-current-directory is (harmlessly enough)
    #	the home directory.
    #
d180 1
a180 1
        runprog -$rsh_timeout rsh $host -n finger $user
d182 1
a182 1
          echo "***$progname: rsh $host -n finger $user timed out" >&2
@


1.66
log
@bloody hell! we need to change things like

	if [ "$<VAR>" = "<WHATEVER>" ]; then

 to:

	if [ "x$<VAR>" = "x<WHATEVER>" ]; then

 now that our current Linux version of "test", alias "[", has become
 too clever by half and allows (quote from manual page)
 "the special expression `-l STRING', which evaluates to the length of STRING".
 (If $<VAR> in the unprotected example above happens to be "-l",
  the next argument ("=" above) is taken to be a string whose length is to
  be measured, and the parsing gets totally screwed up.)
@
text
@d53 1
a53 1
  if [ "$hosts" != "" ]; then
@


1.65
log
@we no longer bother to use an absolute pathname with rsh,
 as the rsh-path seems to no longer begin with ".",
 and in any case the rsh-current-directory is (harmlessly enough)
 the home directory.
@
text
@d46 1
a46 1
  if [ "$1" = "-" ]; then
d94 1
a94 1
elif [ "$1" = "-s" ]; then #listing sorted by user, using rusers
d152 1
a152 1
elif [ "$1" = "-t" ]; then #tiny sorted listing of users, all on one line
d170 1
a170 1
elif [ "$1" = "-l" ]; then #look for all last login times of the given user
@


1.64
log
@upgraded to use absolute pathnames with rsh, as the rsh-path can begin with .!
@
text
@d126 1
a126 1
  #	We use "rsh <host> -n /usr/ucb/finger", rather than "finger @@<host>",
d130 4
a133 1
  #	We use an absolute pathname with rsh as the rsh-path can begin with .!
d144 1
a144 1
        runprog -$rsh_timeout rsh $errorhost -n /usr/ucb/finger
d146 1
a146 1
          echo "***$progname: rsh $errorhost -n /usr/ucb/finger timed out" >&2
d182 3
a184 3
    # We use "rsh $host -n /usr/ucb/finger $user", rather than
    # "finger $user@@$host",
    # as there are now an awful lot of hosts with their finger daemon disabled.
d186 4
a189 1
    # We use an absolute pathname with rsh as the rsh-path can begin with .!
d193 1
a193 1
        runprog -$rsh_timeout rsh $host -n /usr/ucb/finger $user
d195 1
a195 1
          echo "***$progname: rsh $host -n /usr/ucb/finger $user timed out" >&2
@


1.63
log
@added a sort to each emergency finger call in the -s option,
 this being the closest we can come to sorted emergency output
 without immense trouble!
@
text
@d126 5
a130 2
  #	We use "rsh <host> -n finger", rather than "finger @@<host>", as there
  #	are now an awful lot of hosts with their finger daemon disabled.
d141 1
a141 1
        runprog -$rsh_timeout rsh $errorhost -n finger
d143 1
a143 1
          echo "***$progname: rsh $errorhost -n finger timed out" >&2
d179 2
a180 1
    # we use "rsh $host -n finger $user", rather than "finger $user@@$host",
d183 2
d187 1
a187 1
        runprog -$rsh_timeout rsh $host -n finger $user
d189 1
a189 1
          echo "***$progname: rsh $host -n finger $user timed out" >&2
@


1.62
log
@oh, all right, the rsh_timeout needs re-lengthening, at least in term-time!
@
text
@d137 6
a142 4
      runprog -$rsh_timeout rsh $errorhost -n finger
      if [ $? -eq 104 ]; then
        echo "***$progname: rsh $errorhost -n finger timed out" >&2
      fi
@


1.61
log
@let's be brave, and have a shorter rsh_timeout!
@
text
@d37 1
a37 1
rsh_timeout=20
@


1.60
log
@used rsh to bypass the finger daemons in the "emergency fingering" part
 of the -s option, and documented that Kerberos restrictions will apply
added runprog to the rsh calls, both in -s and -l, as it seems to
 work OK: rsh is a true binary, and not in a pipeline(?), and any other
 supposed objections may just have been superstitions!
layout and comment improvements.
@
text
@d37 1
a37 1
rsh_timeout=30
@


1.59
log
@shortened timeouts a little (the system seems faster now, and anyway the
 double-try arrangement in the -s option makes any one timeout less of a
 disaster!).
@
text
@d15 3
a17 1
#				  cooperation of the rusers daemons.)
d31 8
a38 2
finger_timeout=20	#used in the plain run below
rusers_timeout=10	#used in the -s and -t options below
d126 3
d135 3
a137 1
      runprog -$finger_timeout finger @@$errorhost
d139 1
a139 1
        echo "***$progname: finger @@$errorhost timed out" >&2
d177 8
a184 4
    # let's not use runprog here, as rsh tends to be "funny" in its
    # terminal or I/O connection and disconnection behaviour.
    #
    (rsh $host -n finger $user | egrep '^Last login |^On since ') 2>&1 | sed "s/^/$user@@$host:	/"
@


1.58
log
@message clarity improvements.
@
text
@d29 2
a30 2
finger_timeout=30	#used in the plain run below
rusers_timeout=20	#used in the -s and -t options below
@


1.57
log
@added, for convenience, an emergency measure in the -s option
 where hosts that gave errors are fingered for completeness.
@
text
@d121 1
a121 1
    echo "(Fingering hosts that gave errors: $errorhosts...)"
@


1.56
log
@changed -l option back to finger, as last no longer has adequate logs
 (they're now purged nightly!).
Note that it now uses rsh to do a local finger, as an awful lot of finger
 daemons have been disabled; plus its pattern matching is more thorough
 than the -l option of old ("On since" as well as "Last login", plus
 more attention paid to layout matching).
@
text
@d59 3
a61 1
tempstderr=$temploc/stderr
d98 10
a107 3
      runprog -$rusers_timeout rusers -l $host
      if [ $? -eq 104 ]; then
        echo "$progname: $host: rusers timed out" >&2
d113 17
@


1.55
log
@errrrm....made those timeouts even longer (yes, the system really is
 awfully slow nowadays!!).
@
text
@d20 1
a20 1
#				  using last. Note that this uses rsh and so
d135 3
d141 1
a141 1
    (rsh $host -n last -1 $user | sed -e '/^[ 	]*$/d' -e '/^wtmp begins/d' -e "s/^$user[ 	][ 	]*/$user	/") 2>&1 | sed "s/^/$host:/"
@


1.54
log
@made both timeouts longer (we can't get away with quite such short
 timeouts after all---especially not in term-time!)
better names for the timeouts, clarifying their technical roles.
@
text
@d29 2
a30 2
finger_timeout=20	#used in the plain run below
rusers_timeout=10	#used in the -s and -t options below
@


1.53
log
@Major improvement of the -s option:
 * vastly faster as it now uses the new "fingerize" perl script!
 * column headers moved slightly (fingerize is more faithful to finger!)
 * sorting moved to end of pipeline, so that final output is sorted by
   all fields.
@
text
@d29 2
a30 2
slow_timeout=10	#used in the plain run below
fast_timeout=5	#used in the -s and -t options below
d78 1
a78 1
    runprog -$slow_timeout finger @@$host
d96 1
a96 1
      runprog -$fast_timeout rusers -l $host
d115 1
a115 1
      runprog -$fast_timeout rusers $host
@


1.52
log
@name change student_hosts -> student_hosts.cf
@
text
@a59 1
temprealnames=$temploc/realnames
d92 1
a92 19
  #
  # First prepare a list of realnames from /etc/passwd.
  # (rusers only supplies login-names!)
  #
  # Each line of final result: login-name, TAB,
  # realname (truncated or space-padded at right as needed) to column 28.
  #
  sed '
	s/:[^:]*:[^:]*$//
	s/,[^:]*$//
	s/:[ 	]*$/:       ???/
	s/$/                    /
	s/:[^:]*:[^:]*:[^:]*:/	/
      ' /etc/passwd | colrm 29 > $temprealnames

  #
  # Now use this list to add realnames to the sorted output from rusers.
  #
  echo "Login      Name               Host          When        Idle Where"
d100 1
a100 1
    done | sort | sed 's/\.[^ 	]*:[^ 	]*[ 	][ 	]*/	/' |
a101 8
    while read login_name rest_of_line ; do
      realnameline=`grep "^$login_name	" $temprealnames`
      if [ ! -z "$realnameline" ]; then
        echo "$realnameline  $rest_of_line"
      else
        echo "$login_name	       ???            $rest_of_line"
      fi
    done #while
@


1.51
log
@shortened the slow timeout from 20 seconds to 10 seconds.
(I think we can get away with this! On the other hand I don't think it
 can go all the way down to equal the fast timeout, as it does seem that
 finger tends to be slower than rusers.)
@
text
@d48 1
a48 1
    hosts=`sed 's/#.*$//' $LOCALLAB/lib/student_hosts`
d51 1
a51 1
  hosts=`sed 's/#.*$//' $LOCALLAB/lib/student_hosts`
@


1.50
log
@added a timeout to *each* finger call in the plain run, and *each* rusers
 call in the -s and -t options; this massively improves the usability,
 as faulty hosts don't then ruin (or hold up ridiculously) the whole run!
Plus:
 * simpler handling of stdout and stderr in /tmp (stdout no longer needs to
   go to a file)
 * better error messages (more host-specific when possible)
 * layout, comment and variable name improvements in script.
@
text
@d29 1
a29 1
slow_timeout=20	#used in the plain run below
@


1.49
log
@added, with a great deal of trouble, *realnames* to the -s option!
This makes it look much more like "finger on one giant machine".
(Removed the TTY info, which is of little interest, from the output of
 this option, to keep the whole thing within 80 columns.)
Plus layout and comment tidyups.
@
text
@d29 2
a30 1
timeout=20	#used in -s and -t options below
d59 1
a59 2
tempout=$temploc/stdout
temperr=$temploc/stderr
d79 4
a82 1
    finger @@$host
d114 7
a120 6
    runprog -$timeout rusers -l $hosts > $tempout
    if [ $? -eq 104 ]; then
      echo "$progname: rusers timed out" >&2
    fi
    #the sed below removes the TTY info, to fit final output into 80 columns
    sort $tempout | sed 's/\.[^ 	]*:[^ 	]*[ 	][ 	]*/	/' |
d129 2
a130 2
  ) 2> $temperr
  sed 's/^/***/' $temperr >&2
d141 8
a148 7
  runprog -$timeout rusers $hosts > $tempout
  if [ $? -eq 104 ]; then
    echo "$progname: rusers timed out" >&2
  fi
  echo `sed 's/^[^ 	]*[ 	]//' $tempout | tr -s ' 	' '\012' | sort -u`
  ) 2> $temperr
  sed 's/^/***/' $temperr >&2
d161 4
@


1.48
log
@changed "f" to "finger" (the CSG-maintained symlink is gone in the new setup!).
@
text
@d32 1
d34 1
a34 1

d54 1
d56 1
a56 1

d60 1
d71 1
d73 1
d90 19
a108 1
  echo "Login         Host:TTY             When        Idle Where"
d111 14
a124 5
  runprog -$timeout rusers -l $hosts > $tempout
  if [ $? -eq 104 ]; then
    echo "$progname: rusers timed out" >&2
  fi
  sort $tempout
d174 1
d176 1
a176 1

@


1.47
log
@proper trap system (previous one was a mess, which tidied up but then
 continued with the script(!), or tidied up twice, or God knows what else).
@
text
@d74 1
a74 1
    f @@$host
@


1.46
log
@nicer error message for illegal options, explaining correct usage.
@
text
@d58 1
a58 1
trap "rm -rf $temploc" 0 1 2 3 15
d81 1
d100 1
d117 1
d136 1
d140 6
@


1.45
log
@added warning comment about network traffic issues
abolished -r (essentially a duplicate of the plain run)
abolished -l (an inferior quasi-duplicate of -L); renamed -L as -l.
Plus rearranged order in usage comment, and source code to match.

[If rusers starts playing up, or whatever, these old options (or a subset)
 can always be resurrected from their RCS grave.]
@
text
@d126 7
a132 1
  echo "$progname: illegal option $*" >&2
@


1.44
log
@clearer comments (again!).
@
text
@d5 7
a12 10
#	 fscan [-] -l <user>	(looks for all last login times of that user)
#	 fscan [-] -L <user>	(looks for all last login times of that user,
#				  but using last instead of finger. Note that
#				  this uses rsh and so Kerberos restrictions
#				  will apply.)
#	 fscan [-] -r		(simply fingers each host in turn,
#				  but using remote calls to finger on each
#				  machine. [Avoids stunted daemon on kea!]
#				  Note that this uses rsh and so Kerberos
#				  restrictions will apply.)
d19 3
a76 38
elif [ "$1" = "-l" ]; then #look for all last login times of the given user

  if [ $# != 2 ]; then
    echo $progname: -l option requires one username >&2
    exit 1
  fi

  user=$2

  for host in $hosts ; do
    (f $user@@$host | grep 'Last login') 2>&1 | sed "s/^/$user@@$host:	/"
  done #for host

elif [ "$1" = "-L" ]; then #like -l, but using last instead of finger

  if [ $# != 2 ]; then
    echo $progname: -L option requires one username >&2
    exit 1
  fi

  user=$2

  for host in $hosts ; do
    (rsh $host -n last -1 $user | sed -e '/^[ 	]*$/d' -e '/^wtmp begins/d' -e "s/^$user[ 	][ 	]*/$user	/") 2>&1 | sed "s/^/$host:/"
  done #for host

elif [ "$1" = "-r" ]; then #the remote-call version of the huge scan

  if [ $# != 1 ]; then
    echo $progname: -r option takes no further arguments >&2
    exit 1
  fi

  for host in $hosts ; do
    echo "[$host.doc.ic.ac.uk]" #makes it look like a "f @@$host" output
    rsh $host -n finger #the shorter name "f" is not on the rsh-path
  done #for host

d110 13
@


1.43
log
@added -t option (tiny sorted listing of users, all on one line)
abolished the little-used -u and <string> options
simpler handling of stdout and stderr in -s option (inherited by -t too)
clearer comments
general tidyups.
@
text
@d19 1
a19 1
#	 fscan [-] -t		(tiny listing sorted by user: all on one line.
d115 1
a115 1
elif [ "$1" = "-s" ]; then #sorted listing by user, using rusers
d133 1
a133 1
elif [ "$1" = "-t" ]; then #tiny listing sorted by user: all on one line.
@


1.42
log
@OK, OK, *further* minor improvement to header line layout in -s option!
@
text
@d5 1
a5 2
# usage: fscan [-]		(gives the huge scan, unadulterated)
#	 fscan [-] <string>	(looks for <string>, usually a userid/realname)
d11 1
a11 3
#	 fscan [-] -u <user(s)>	(fingers the given user(s) on all hosts---
#				  ---usually gives far too much information!)
#	 fscan [-] -r		(gives the huge scan, unadulterated,
d19 3
d27 1
a27 1
umask 077 #privacy in /tmp (used in -s)
d29 1
d31 3
d53 18
a102 15
elif [ "$1" = "-u" ]; then #finger the given user(s) on all hosts

  shift
  users="$*"
  if [ "$users" = "" ]; then
    echo $progname: no users given >&2
    exit 1
  fi

  for host in $hosts ; do
    for user in $users ; do
      f $user@@$host
    done #for user
  done #for host

a121 12
  temploc=/tmp/$progname.$$
  tempout=$temploc/stdout
  temperr=$temploc/stderr
  trap "rm -rf $temploc ; exit 1" 1 2 3 15

  rm -rf $temploc
  mkdir $temploc
  if [ $? -ne 0 ]; then
    echo "$progname: fatal error: funny business in /tmp" >&2
    exit 1
  fi

d124 2
a125 1
  runprog -20 rusers -l $hosts > $tempout 2> $temperr
d127 1
a127 1
    echo "$progname: rusers timed out" >> $temperr
d129 2
a130 1
  sort $tempout 2>> $temperr
a131 1
  rm -rf $temploc
d133 1
a133 1
else #grep for the given string
d135 2
a136 3
  string="$*"
  if [ "$string" = "" ]; then
    echo $progname: no search string given >&2
d140 13
a152 5
  for host in $hosts ; do
    (f @@$host | egrep -i "$string") 2>&1 | sed "s/^/$host:	/"
    # we use egrep as it's faster _and_ covers more allowed patterns than grep
    #  (though I don't see how it can be both! ---unless grep is badly coded...)
  done #for host
@


1.41
log
@minor improvement to header line layout in -s option.
@
text
@d127 1
a127 1
  echo "Login         Host:TTY            When         Idle Where"
@


1.40
log
@added header line in -s option (gives the output the same flavour as finger).
@
text
@d127 1
a127 1
  echo "Login        Host:TTY             When         Idle Where"
@


1.39
log
@security and privacy tightened up in /tmp
longer timeout in -s option.
@
text
@d127 2
@


1.38
log
@added -s option (produces a listing sorted by user, using rusers).
@
text
@d27 1
d115 11
a125 3
  tempout=/tmp/$progname.stdout.$$
  temperr=/tmp/$progname.stderr.$$
  trap "rm -f $tempout $temperr ; exit 1" 1 2 3 15
d127 1
a127 2
  rm -f $tempout $temperr
  runprog -10 rusers -l $hosts > $tempout 2> $temperr
d133 1
a133 1
  rm -f $tempout $temperr
@


1.37
log
@added - option to ignore ~/.fscanrc completely
minor clarity improvement.
@
text
@d19 3
d106 20
@


1.36
log
@nicer .fscanrc message.
@
text
@d5 4
a8 4
# usage: fscan			(gives the huge scan, unadulterated)
#	 fscan <string>		(looks for <string>, usually a userid/realname)
#	 fscan -l <user>	(looks for all last login times of that user)
#	 fscan -L <user>	(looks for all last login times of that user,
d12 1
a12 1
#	 fscan -u <user(s)>	(fingers the given user(s) on all hosts---
d14 1
a14 1
#	 fscan -r		(gives the huge scan, unadulterated,
d20 3
a22 1
# A *non-empty* host list in ~/.fscanrc will override the default host list.
d26 8
a33 1
if [ -f $HOME/.fscanrc ]; then
d35 3
a37 1
  if [ "$hosts" = "" ]; then
a38 2
  else
    echo "(Using host list in \"$HOME/.fscanrc\")" >&2
@


1.35
log
@improved comment, documenting the meaning of ~/.fscanrc.
@
text
@d29 1
a29 1
    echo "(Using host list in \"$HOME/.fscanrc\"...)" >&2
@


1.34
log
@now allows a (non-empty!) host-list in ~/.fscanrc to override the default
 host list. [This is handy for temporarily ignoring any faulty hosts.]
@
text
@d20 2
@


1.33
log
@removed EE hosts (who cares about EE hosts?! :-)  ).
@
text
@d21 11
a31 1
hosts=`sed 's/#.*$//' $LOCALLAB/lib/student_hosts`
@


1.32
log
@clearer script layout.
@
text
@d3 1
a3 3
# the huge finger-scan, by popular demand...
# NOTE: the EE hosts below are included at the request of some ISE students.
#       Update list of EE hosts manually as needed.
a19 7
# In any of these invocations you can put the options -doc, -ee or -all straight
#  after the command name fscan. The -doc option looks at the available DoC
#  machines; -ee looks at various Elec Eng machines instead
#  of the DoC ones; -all looks at everything, DoC and Elec Eng.
#
# The default is currently -doc for all the above forms of usage.
#
d21 1
a21 5

doc_hosts=`sed 's/#.*$//' $LOCALLAB/lib/student_hosts`
ee_hosts="ampere coulomb farad henry hertz joule lumen newton ohm radian siemens tesla volt watt weber salmon tuna asterix obelix  aquarius cancer capricorn leo libra pisces scorpio taurus virgo chips cod haddock plaice"

ee_hosts=`echo $ee_hosts | tr -s ' 	' '\012' | sed 's/$/.ee.ic.ac.uk/'`
a22 11
hosts="" #to indicate default behaviour later on if not changed...
if [ $# != 0 ]; then
  if [ "$1" = "-doc" ]; then
    shift ; hosts="$doc_hosts"
  elif [ "$1" = "-ee" ]; then
    shift ; hosts="$ee_hosts"
  elif [ "$1" = "-all" ]; then
    shift ; hosts="$doc_hosts $ee_hosts"
  fi
fi

a25 3
  if [ "$hosts" = "" ]; then
    hosts="$doc_hosts"
  fi
a38 3
  if [ "$hosts" = "" ]; then
    hosts="$doc_hosts"
  fi
a51 3
  if [ "$hosts" = "" ]; then
    hosts="$doc_hosts"
  fi
a64 3
  if [ "$hosts" = "" ]; then
    hosts="$doc_hosts"
  fi
a77 4
  if [ "$hosts" = "" ]; then
    hosts="$doc_hosts"
  fi

d79 1
a79 5
    if [ "`echo $host | grep '\.'`" = "" ]; then #assume it's a DoC machine
      host="$host.doc.ic.ac.uk"
    fi

    echo "[$host]" #makes it look at least roughly like a "f @@$host" output
a90 3
  if [ "$hosts" = "" ]; then
    hosts="$doc_hosts"
  fi
@


1.31
log
@sequentialized: the parallel runs used a farcical number of processes!
(They were a danger to every other process by the user on that machine,
 at least every process that tried to fork off any children.)
@
text
@d47 1
d49 1
d56 1
d58 1
d72 1
d74 1
d88 1
d90 1
d106 1
d108 1
d126 1
d128 1
d143 1
@


1.30
log
@made "$host.doc.ic.ac.uk"-style naming a bit less global. In most positions
 it's just clutter.
@
text
@d25 1
a25 4
#  of the DoC ones; -all looks at everything, DoC and Elec Eng. However it is
#  likely that -all on the parallelized runs will clog up the process table
#  annoyingly often, and you will get fork failed error messages and an
#  incomplete scan.
a28 4
# NOTE: because of the way regular expressions work, you can get a speeded-up
#  parallel version of the unadulterated huge scan by typing "fscan ^". This is
#  just a special case of fscan <string> above.
#
a64 2

  (
d66 1
a66 1
    ((f $user@@$host | grep 'Last login') 2>&1 | sed "s/^/$user@@$host:	/") &
a67 2
  ) 2>&1 | cat #this is like "wait", but better as it prevents output from
               # spilling on and on after an interrupt
a78 2

  (
d80 1
a80 1
    ((rsh $host -n last -1 $user | sed -e '/^[ 	]*$/d' -e '/^wtmp begins/d' -e "s/^$user[ 	][ 	]*/$user	/") 2>&1 | sed "s/^/$host:/") &
a81 2
  ) 2>&1 | cat #this is like "wait", but better as it prevents output from
               # spilling on and on after an interrupt
a125 2

  (
d127 1
a127 1
    ((f @@$host | egrep -i "$string") 2>&1 | sed "s/^/$host:	/") &
a130 2
  ) 2>&1 | cat #this is like "wait", but better as it prevents output from
               # spilling on and on after an interrupt
@


1.29
log
@added -r option which does the simple huge scan, but using rsh.
(gets round the stunted daemon on kea!)
made -doc the default for all forms of usage, sequential or parallel.
@
text
@a40 1
doc_hosts=`echo $doc_hosts | tr -s ' 	' '\012' | sed 's/$/.doc.ic.ac.uk/'`
d124 5
a128 1
    echo "[$host]" #you don't get this from the remote calls
@


1.28
log
@gets DoC student hosts directly from lib-file
 (show_student_hosts abolished)
clearer comments.
@
text
@d4 2
a5 3
# NOTE: the EE hosts below are included at the request of some ISE students
#  and can be suppressed by -doc (see usage comment below). Update list of
#  EE hosts manually as needed.
d16 5
d30 1
a30 2
# The defaults are currently -all for the sequential runs and -doc for those
#  that are conducted in parallel fashion.
d41 2
a42 1
ee_hosts=`echo $ee_hosts | tr -s ' 	' '\012' | sed 's/$/.ee/'`
d57 1
a57 1
    hosts="$doc_hosts $ee_hosts"
d107 1
a107 1
    hosts="$doc_hosts $ee_hosts"
d113 14
@


1.27
log
@show_plausible_hosts -> show_student_hosts (new public command).
@
text
@d3 4
a6 2
# the huge scan.....
#  (update list of machines manually as needed)
d13 2
a14 1
#				  this needs rsh-permission and so may fail.)
d35 1
a35 1
doc_hosts=`/homes/ids/.bin/show_student_hosts`
@


1.26
log
@removed achilles and swan. (They are just clutter for most users, including
 me, frankly!)
@
text
@d32 1
a32 1
doc_hosts=`/homes/ids/.bin/show_plausible_hosts`
@


1.25
log
@now uses show_plausible_hosts to help build DoC hostlist.
@
text
@d32 1
a32 1
doc_hosts="achilles  swan  `/homes/ids/.bin/show_plausible_hosts`"
@


1.24
log
@tidied up EE host list. (ICCCS robot names removed, eg, eecsk---they are not
 needed because of an aliasing system. Also some new hosts added, and some
 that don't actually exist removed.)
@
text
@d32 1
a32 1
doc_hosts="achilles  swan  kea motmot dove finch owl crane ostrich oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak41 oak42 oak43 oak44 oak45 oak46 oak47 oak48 oak49 oak50"
@


1.23
log
@removed some oaks that don't actually exist yet. (they clutter -L output)
@
text
@d33 1
a33 1
ee_hosts="amp coulomb farad henry joule lumen ohm siemens tesla volt watt weber aquarius aries cancer capricorn gemini leo libra pisces sagittarius scorpio taurus virgo eecfsa eecsd eecsg eecsj eecsk eecsn eecsq castor pollux"
@


1.22
log
@still more readable output format in -L option. (nice tabbing)
@
text
@d32 1
a32 1
doc_hosts="achilles  swan  kea motmot dove finch owl crane ostrich oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30 oak40 oak41 oak42 oak43 oak44 oak45 oak46 oak47 oak48 oak49 oak50 oak51"
@


1.21
log
@corrected -L option to only take one user and use last -1. Otherwise you get
 far too much output!
more readable output format in -L option.
@
text
@d87 1
a87 1
    ((rsh $host -n last -1 $user | sed -e '/^[ 	]*$/d' -e '/^wtmp begins/d') 2>&1 | sed "s/^/$host:/") &
@


1.20
log
@added -L to get last logins using last as an alternative to finger. Note that
 this uses rsh and so may fail (eg, Kerberos, EE<->DoC no account,.....).
@
text
@d9 1
a9 1
#	 fscan -L <user(s)>	(looks for all last login times of given users,
d74 2
a75 2
  if [ $# -lt 2 ]; then
    echo $progname: -L option requires at least one username >&2
d79 1
a79 2
  shift
  users="$*"
d87 1
a87 1
    ((rsh $host -n last $users | sed -e '/^[ 	]*$/d' -e '/^wtmp begins/d') 2>&1 | sed "s/^/$host:	/") &
@


1.19
log
@nicer order in comment and source code. (no change in functionality)
@
text
@d9 3
d70 19
@


1.18
log
@added joule and eecsq to EE host-list
@
text
@a7 1
#	 fscan -u <user(s)>	(fingers the given user(s) on all hosts)
d9 2
a51 16
elif [ "$1" = "-u" ]; then #finger the given user(s) on all hosts
  shift
  users="$*"
  if [ "$users" = "" ]; then
    echo $progname: no users given >&2
    exit 1
  fi

  if [ "$hosts" = "" ]; then
    hosts="$doc_hosts $ee_hosts"
  fi
  for host in $hosts ; do
    for user in $users ; do
      f $user@@$host
    done #for user
  done #for host
d70 16
@


1.17
log
@simplified presentation of EE host-list (the .ee suffixes are added
 automatically).
@
text
@d29 1
a29 1
ee_hosts="amp coulomb farad henry lumen ohm siemens tesla volt watt weber aquarius aries cancer capricorn gemini leo libra pisces sagittarius scorpio taurus virgo eecfsa eecsd eecsg eecsj eecsk eecsn castor pollux"
@


1.16
log
@added eecsd, eecsg, eecsj, eecsn (EE hosts)
@
text
@d29 3
a31 1
ee_hosts="amp.ee coulomb.ee farad.ee henry.ee lumen.ee ohm.ee siemens.ee tesla.ee volt.ee watt.ee weber.ee aquarius.ee aries.ee cancer.ee capricorn.ee gemini.ee leo.ee libra.ee pisces.ee sagittarius.ee scorpio.ee taurus.ee virgo.ee eecfsa.ee eecsd.ee eecsg.ee eecsj.ee eecsk.ee eecsn.ee castor.ee pollux.ee"
@


1.15
log
@added lumen, siemens, weber, eecfsa, eecsk to EE host list
@
text
@d29 1
a29 1
ee_hosts="amp.ee coulomb.ee farad.ee henry.ee lumen.ee ohm.ee siemens.ee tesla.ee volt.ee watt.ee weber.ee aquarius.ee aries.ee cancer.ee capricorn.ee gemini.ee leo.ee libra.ee pisces.ee sagittarius.ee scorpio.ee taurus.ee virgo.ee eecfsa.ee eecsk.ee castor.ee pollux.ee"
@


1.14
log
@added -doc, -ee and -all options, with sensible defaults (-doc for parallel,
 -all for sequential).
@
text
@d29 1
a29 1
ee_hosts="amp.ee coulomb.ee farad.ee henry.ee ohm.ee tesla.ee volt.ee watt.ee aquarius.ee aries.ee cancer.ee capricorn.ee gemini.ee leo.ee libra.ee pisces.ee sagittarius.ee scorpio.ee taurus.ee virgo.ee castor.ee pollux.ee"
@


1.13
log
@added EE hosts
explained "fscan ^" in comment.
@
text
@d11 11
d27 3
a29 1
hosts="achilles  swan  kea motmot dove finch owl crane ostrich oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30 oak40 oak41 oak42 oak43 oak44 oak45 oak46 oak47 oak48 oak49 oak50 oak51  amp.ee coulomb.ee farad.ee henry.ee ohm.ee tesla.ee volt.ee watt.ee aquarius.ee aries.ee cancer.ee capricorn.ee gemini.ee leo.ee libra.ee pisces.ee sagittarius.ee scorpio.ee taurus.ee virgo.ee castor.ee pollux.ee"
d31 11
d43 3
d57 3
d73 4
d88 4
@


1.12
log
@made comment less "techie".
@
text
@d11 4
d16 1
a16 1
hosts="achilles  swan  kea motmot dove finch owl crane ostrich oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30 oak40 oak41 oak42 oak43 oak44 oak45 oak46 oak47 oak48 oak49 oak50 oak51"
@


1.11
log
@added -l <user> to look for all last login times of the given user.
@
text
@d7 1
a7 1
#	 fscan <string>		(greps for <string>, usually a userid/realname)
@


1.10
log
@massively improved by using Bill Sharp's method of putting all the sub-tasks
in the background and wrapping up inside a cat.

So: you can now run it plain, or with a search string, or with -u to get
full finger entries for specified users.
@
text
@d9 1
d31 14
@


1.9
log
@added owl.
@
text
@d1 1
a1 1
#!/bin/csh -f
d6 6
a11 2
set hosts = (achilles  swan  kea motmot dove finch owl crane ostrich oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30 oak40 oak41 oak42 oak43 oak44 oak45 oak46 oak47 oak48 oak49 oak50 oak51)
set users = ($*)
d13 2
a14 2
foreach host ($hosts)
  if !($#users) then
d16 11
a26 2
  else
    foreach user ($users)
d28 18
a45 3
    end #foreach user
  endif
end #foreach host
@


1.8
log
@tidied up path and/or comments about being publicly executable.
(~ids/.bin was once needed on path when errecho, etc. were there; but they
are now in /vol/lab/bin.)
@
text
@d6 1
a6 1
set hosts = (achilles  swan  kea motmot dove finch crane ostrich oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30 oak40 oak41 oak42 oak43 oak44 oak45 oak46 oak47 oak48 oak49 oak50 oak51)
@


1.7
log
@added kea, motmot, dove and finch.
@
text
@a5 2
# To be publicly executable.
#
@


1.6
log
@added new oaks.
@
text
@d8 1
a8 1
set hosts = (achilles  swan  crane ostrich oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30 oak40 oak41 oak42 oak43 oak44 oak45 oak46 oak47 oak48 oak49 oak50 oak51)
@


1.5
log
@put crane and ostrich together.
minor tidyups.
@
text
@d8 1
a8 1
set hosts = (achilles  swan  crane ostrich oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30)
@


1.4
log
@removed sun3's.
@
text
@d8 1
a8 3
set progname = fscan

set hosts = (achilles  swan  crane oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30 ostrich)
@


1.3
log
@removed fulmar and puffin. [Who needs them? :-)]
@
text
@d10 1
a10 1
set hosts = (achilles  swan  crane oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30 ostrich  flamingo pelican tcsun1 tcsun2 tcsun3 tcsun4 tcsun5 tcsun6)
@


1.2
log
@changed list of hosts a little.
@
text
@d10 1
a10 1
set hosts = (achilles  swan  crane fulmar oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30 ostrich puffin  flamingo pelican tcsun1 tcsun2 tcsun3 tcsun4 tcsun5 tcsun6)
@


1.1
log
@Initial revision
@
text
@d10 1
a10 1
set hosts = (achilles  swan  crane fulmar heron lorikeet murn oak1 oak2 oak3 oak4 oak5 oak6 oak7 oak8 oak9 oak10 oak11 oak20 oak21 oak22 oak23 oak24 oak25 oak26 oak27 oak28 oak29 oak30 ostrich puffin stork toucan  flamingo pelican tcsun1 tcsun2 tcsun3 tcsun4 tcsun5 tcsun6 vlsi vlsi02 vlsi03 vlsi04)
@
