v06i084: lowlav -- return net host with lowest load average
Brandon S. Allbery - comp.sources.misc
allbery at uunet.UU.NET
Sun Apr 9 05:47:01 AEST 1989
Posting-number: Volume 6, Issue 84
Submitted-by: "John D. DiMarco" <jdd at db.toronto.edu>
Archive-name: lowlav
Description: lowlav: given a list of hosts, return the name of the host with the
lowest load average.
It's very simple, needs no makefile or readme. A man-page is included.
It may be BSD - specific (does SYSV use /usr/spool/rwho/whod.* ?)
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# If this archive is complete, you will see the following message at the end:
# "End of shell archive."
#
# Contents:
# lowlav.1 lowlav.c
#
# Wrapped by jdd at db.toronto.edu on Fri Mar 31 20:04:43 1989
#
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f lowlav.1 -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"lowlav.1\"
else
echo shar: Extracting \"lowlav.1\" \(600 characters\)
sed "s/^X//" >lowlav.1 <<'END_OF_lowlav.1'
X.TH LOWLAV 1V "31 March 1989"
X.SH NAME
Xlowlav \- print host with lowest load average
X.SH SYNOPSIS
X.B lowlav
X[ -v ] [ -f hostfile ]
X.SH DESCRIPTION
X.I lowlav
Xreads a list of hosts from the standard input, returns the host with the lowest
Xload average.
X.nf
X.br
X.SH OPTIONS
X.IP \fB\-f\ \fIhostfile\fP
XRead hosts from file "hostfile" instead of from the standard input.
X.IP \fB\-v \fP
XVerbose. Print an error message for every host not in /usr/spool/rwho.
X.SH AUTHOR
XJohn DiMarco, University of Toronto, 1989
X.SH FILES
X/usr/spool/rwho/whod.* Data Files
X.SH SEE ALSO
Xruptime(1C), rwho(1C), rwhod(8C)
END_OF_lowlav.1
if test 600 -ne `wc -c <lowlav.1`; then
echo shar: \"lowlav.1\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f lowlav.c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"lowlav.c\"
else
echo shar: Extracting \"lowlav.c\" \(2067 characters\)
sed "s/^X//" >lowlav.c <<'END_OF_lowlav.c'
X/*
XGiven a list of machine names, return the name of the machine in that list
Xwith the lowest load average in /usr/spool/rwho.
X
XWritten by John DiMarco, March 1989 at the University of Toronto
XBased on a program 'asun' by Jonathon Haruni.
X
X */
X
X#include <stdio.h>
X#include <string.h>
X
X#define STREQ(a,b)(strcmp((a),(b)) == 0)
X#define TRUE 1
X#define FALSE 0
X
X#define TOOBIGLOAD 30000
X
Xextern char *getenv();
Xextern char *optarg;
Xextern int opterr;
X
Xstruct partofrwhodfile {
X char fill[4];
X int garbage[2];
X char hostname[32];
X int loadav;
X};
X
X
Xmain(argc, argv)
Xint argc;
Xchar *argv[];
X{
X FILE *fp, *input;
X int c, verbose, bestload = TOOBIGLOAD;
X char besthost[32];
X char thishost[80];
X char filename[120];
X struct partofrwhodfile entry;
X
X *besthost = '\0';
X
X verbose = FALSE;
X input = stdin;
X
X while((c = getopt(argc, argv, "vf:")) != EOF){
X switch(c){
X case 'v':
X /* Verbose mode: print out error messages for */
X /* hostnames which don't appear in /usr/spool/rwho */
X verbose = TRUE;
X break;
X case 'f':
X /* Take input from a file rather than stdin */
X input = fopen(optarg, "r");
X if(NULL==input){
X (void)fprintf(stderr,
X "%s: Can't open file %s \n",
X argv[0], optarg);
X (void)exit(1);
X }
X break;
X case '?':
X (void)fprintf(stderr, "Usage: %s [-v] [-f filename]\n",
X argv[0]);
X (void)exit(1);
X break;
X }
X
X }
X
X while(!feof(input)){
X (void)fscanf(input, "%80s ", thishost);
X (void)sprintf(filename,"/usr/spool/rwho/whod.%s",
X thishost);
X if((fp = fopen(filename,"r")) != NULL) {
X (void)fread(&entry,sizeof(struct partofrwhodfile),
X 1,fp);
X (void)fclose(fp);
X if(entry.loadav < bestload) {
X (void)strcpy(besthost,thishost);
X bestload = entry.loadav;
X }
X } else {
X if(verbose){
X fprintf(stderr, "%s: %s not found\n",
X argv[0], filename);
X }
X }
X }
X if(TOOBIGLOAD == bestload){
X (void)fprintf(stderr, "%s: No data for specified hosts\n",
X argv[0]);
X (void)exit(1);
X }
X (void)printf("%s\n",besthost);
X if(input!=stdin)
X (void)fclose(input);
X}
END_OF_lowlav.c
if test 2067 -ne `wc -c <lowlav.c`; then
echo shar: \"lowlav.c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0
----
John
John DiMarco * We will live in the light * jdd%db.toronto.edu at relay.cs.net
jdd at db.toronto.edu jdd at db.utoronto.ca jdd at db.toronto.cdn
{uunet!utai,watmath!utai,decvax!utcsri,decwrl!utcsri}!db!jdd jdd at utcsri.UUCP
More information about the Comp.sources.misc
mailing list