[comp.unix.xenix] uusched.sh: a shell script to replace broken uuscheds

gam@netcom.uucp (Gordon Moffett) (05/03/90)

This article introduces two tools, one dependent on the other.
The first is 'shuffle' a randomizer of lines of text; and
the other is 'uusched.sh', a shell script version of /usr/lib/uucp/uusched
which uses 'shuffle' to provide it's list of site names to call in
random order.  Since many Xenix systems have uuscheds that don't work
(core dump, etc) like ours, I wanted to get uusched.sh to that audience
as well.
Choose your followup's "Newsgroups:" and "Subject:" appropriately.

The first file in the shar below is 'shuffle', a simple shell script
that is the opposite of sort.  It takes a list of files or standard
input, and prints them out in random order to standard output.
This can be implimented in a number of ways, but this is one of
the most portable versions (thanks to Mickey @ Altos for this one).

This has a few entertaining applications:

shuffle < /etc/passwd | sed 1q	# pick a user at random

shuffle < fortunes | sed 1q	# print a one-liner fortune

It also allows for the shell script equivalent of uusched, 'uusched.sh'
the second file in the shar.  We use here on this Xenix 2.3.2 system
because their uusched is broken.

I'd like to see other ways of doing what 'shuffle' does, as long as it
allows for completely random results, like the last line of input
being the first line of output.

#!/bin/sh
# xshar:	Shell Archiver  (v1.22)
#
#	Run the following text with /bin/sh to create:
#	  shuffle
#	  uusched.sh
#
sed 's/^X//' << 'SHAR_EOF' > shuffle &&
Xawk "BEGIN { srand($$) } { print int(rand()*1000000), \$0 }" $* |
Xsort -n |
Xsed 's/^[0-9]* //'
SHAR_EOF
chmod 0775 shuffle || echo "restore of shuffle fails"
sed 's/^X//' << 'SHAR_EOF' > uusched.sh &&
X: /bin/sh
XPATH=$PATH:/usr/local/bin; export PATH	# to find shuffle
Xfile=/tmp/uu$$
Xtrap "rm -f $file" 0 1 15
X
Xfor site in `uuname | shuffle`
Xdo
X	uustat -s$site > $file
X	if [ -s $file ]
X	then
X		/usr/lib/uucp/uucico -r1 -s$site
X	fi
Xdone
SHAR_EOF
chmod 0775 uusched.sh || echo "restore of uusched.sh fails"
exit 0