head	1.2;
access;
symbols
	RELENG_4_11_0_RELEASE:1.1.1.1
	RELENG_4_11:1.1.1.1.0.20
	RELENG_4_11_BP:1.1.1.1
	RELENG_4_10_0_RELEASE:1.1.1.1
	RELENG_4_10:1.1.1.1.0.18
	RELENG_4_10_BP:1.1.1.1
	RELENG_4_9_0_RELEASE:1.1.1.1
	RELENG_4_9:1.1.1.1.0.16
	RELENG_4_9_BP:1.1.1.1
	RELENG_4_8_0_RELEASE:1.1.1.1
	RELENG_4_8:1.1.1.1.0.14
	RELENG_4_8_BP:1.1.1.1
	RELENG_4_7_0_RELEASE:1.1.1.1
	RELENG_4_7:1.1.1.1.0.12
	RELENG_4_7_BP:1.1.1.1
	RELENG_4_6_2_RELEASE:1.1.1.1
	RELENG_4_6_1_RELEASE:1.1.1.1
	RELENG_4_6_0_RELEASE:1.1.1.1
	RELENG_4_6:1.1.1.1.0.10
	RELENG_4_6_BP:1.1.1.1
	v5_006_01:1.1.1.1
	RELENG_4_5_0_RELEASE:1.1.1.1
	RELENG_4_5:1.1.1.1.0.8
	RELENG_4_5_BP:1.1.1.1
	RELENG_4_4_0_RELEASE:1.1.1.1
	RELENG_4_4:1.1.1.1.0.6
	RELENG_4_4_BP:1.1.1.1
	RELENG_4_3_0_RELEASE:1.1.1.1
	RELENG_4_3:1.1.1.1.0.4
	RELENG_4_3_BP:1.1.1.1
	RELENG_4_2_0_RELEASE:1.1.1.1
	RELENG_4_1_1_RELEASE:1.1.1.1
	PRE_SMPNG:1.1.1.1
	RELENG_4_1_0_RELEASE:1.1.1.1
	v5_006:1.1.1.1
	RELENG_4_0_0_RELEASE:1.1.1.1
	RELENG_4:1.1.1.1.0.2
	RELENG_4_BP:1.1.1.1
	v5_005_03:1.1.1.1
	LWALL:1.1.1;
locks; strict;
comment	@# @;


1.2
date	2002.05.16.10.07.51;	author markm;	state dead;
branches;
next	1.1;

1.1
date	99.05.02.14.19.12;	author markm;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	99.05.02.14.19.12;	author markm;	state Exp;
branches;
next	;


desc
@@


1.2
log
@Perl is no longer in base. Long live the port!
@
text
@#!/usr/bin/perl

# $RCSfile: scanner,v $$Revision: 4.1 $$Date: 92/08/07 17:20:44 $

# This runs all the scan_* routines on all the machines in /etc/ghosts.
# We run this every morning at about 6 am:

#	!/bin/sh
#	cd /usr/adm/private
#	decrypt scanner | perl >scan.out 2>&1
#	mail admin <scan.out

# Note that the scan_* files should be encrypted with the key "-inquire", and
# scanner should be encrypted somehow so that people can't find that key.
# I leave it up to you to figure out how to unencrypt it before executing.

$ENV{'PATH'} = '/bin:/usr/bin:/usr/local/bin:/usr/ucb:.';

$| = 1;		# command buffering on stdout

print "Subject: bizarre happenings\n\n";

(chdir '/usr/adm/private') || die "Can't cd to /usr/adm/private: $!\n";

if ($#ARGV >= 0) {
    @@scanlist = @@ARGV;
} else {
    @@scanlist = split(/[ \t\n]+/,`echo scan_*`);
}

scan: while ($scan = shift(@@scanlist)) {
    print "\n********** $scan **********\n";
    $showhost++;

    $systype = 'all';

    open(ghosts, '/etc/ghosts') || die 'No /etc/ghosts file';

    $one_of_these = ":$systype:";
    if ($systype =~ s/\+/[+]/g) {
	$one_of_these =~ s/\+/:/g;
    }

    line: while (<ghosts>) {
	s/[ \t]*\n//;
	if (!$_ || /^#/) {
	    next line;
	}
	if (/^([a-zA-Z_0-9]+)=(.+)/) {
	    $name = $1; $repl = $2;
	    $repl =~ s/\+/:/g;
	    $one_of_these =~ s/:$name:/:$repl:/;
	    next line;
	}
	@@gh = split;
	$host = $gh[0];
	if ($showhost) { $showhost = "$host:\t"; }
	class: while ($class = pop(gh)) {
	    if (index($one_of_these,":$class:") >=0) {
		$iter = 0;
		`exec crypt -inquire <$scan >.x 2>/dev/null`;
		unless (open(scan,'.x')) {
		    print "Can't run $scan: $!\n";
		    next scan;
		}
		$cmd = <scan>;
		unless ($cmd =~ s/#!(.*)\n/$1/) {
		    $cmd = '/usr/bin/perl';
		}
		close(scan);
		if (open(PIPE,"exec rsh $host '$cmd' <.x|")) {
		    sleep(5);
		    unlink '.x';
		    while (<PIPE>) {
			last if $iter++ > 1000;		# must be looping
			next if /^[0-9.]+u [0-9.]+s/;
			print $showhost,$_;
		    }
		    close(PIPE);
		} else {
		    print "(Can't execute rsh: $!)\n";
		}
		last class;
	    }
	}
    }
}
@


1.1
log
@Initial revision
@
text
@@


1.1.1.1
log
@Maintenance releace 3 of perl5.005. Includes support for threads.
@
text
@@
