92 lines
2.1 KiB
Perl
Executable File
92 lines
2.1 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
eval ' exec /usr/local/bin/perl $0 "$@" '
|
|
if $running_under_some_shell;
|
|
|
|
# From a script by <Bill.Campbell@celestial.com>
|
|
# Newsgroups: comp.sources.misc
|
|
# Subject: v28i073: uureroute - Reroute HDB queued mail, Part01/01
|
|
# Date: 26 Feb 92 02:28:37 GMT
|
|
#
|
|
# This is a Honey DanBer specific routine written in perl to reroute all
|
|
# mail queued up for a specific host. It needs to be run as "root" since
|
|
# uucp will not allow itself to remove others requests.
|
|
#
|
|
# Revision *** 92/21/09: Francois Pinard <pinard@iro.umontreal.ca>
|
|
# 1. adapted for Taylor UUCP
|
|
#
|
|
# Revision 1.3 91/10/08 09:01:21 src
|
|
# 1. Rewritten in perl
|
|
# 2. Add -v option for debugging.
|
|
#
|
|
# Revision 1.2 91/10/07 23:57:42 root
|
|
# 1. Fix mail program path.
|
|
# 2. Truncate directory name to 7 characters
|
|
|
|
($progname = $0) =~ s!.*/!!; # save this very early
|
|
|
|
$USAGE = "
|
|
# Reroute uucp mail
|
|
#
|
|
# Usage: $progname [-v] host [host...]
|
|
#
|
|
# Options Argument Description
|
|
# -v Verbose (doesn't execute /bin/sh)
|
|
#
|
|
";
|
|
|
|
$UUSTAT = "/usr/local/bin/uustat";
|
|
$SHELL = "/bin/sh";
|
|
$SMAIL = "/bin/smail";
|
|
|
|
sub usage
|
|
{
|
|
die join ("\n", @_) . "\n$USAGE\n";
|
|
}
|
|
|
|
do "getopts.pl";
|
|
|
|
&usage ("Invalid Option") unless do Getopts ("vV");
|
|
|
|
$verbose = ($opt_v ? '-v' : ());
|
|
$suffix = ($verbose ? '' : $$);
|
|
|
|
&usage ("No system specified") if $#ARGV < 0;
|
|
|
|
if (!$verbose)
|
|
{
|
|
open (SHELL, "| $SHELL");
|
|
select SHELL;
|
|
}
|
|
|
|
while ($system = shift)
|
|
{
|
|
$sysprefix = substr ($system, 0, 7);
|
|
$directory = "/usr/spool/uucp/$sysprefix";
|
|
open (UUSTAT, "$UUSTAT -s $system -c rmail |");
|
|
print "set -ex\n";
|
|
while (<UUSTAT>)
|
|
{
|
|
($jobid, ) = split;
|
|
($cfile) = substr ($jobid, length ($jobid) - 5);
|
|
$cfilename = "$directory/C./C.$cfile";
|
|
open (CFILE, $cfilename) || die "Cannot open $cfilename\n";
|
|
$_ = <CFILE>;
|
|
close CFILE;
|
|
if (/^E D\.(....) [^ ]+ [^ ]+ -CR D\.\1 0666 [^ ]+ 0 rmail (.*)/)
|
|
{
|
|
$datafile = "$directory/D./D.$1";
|
|
$address = $2;
|
|
}
|
|
else
|
|
{
|
|
print STDERR;
|
|
die "Cannot parse previous line from $cfilename\n";
|
|
}
|
|
print "$SMAIL -R $system!$address < $datafile && $UUSTAT -k $jobid\n";
|
|
}
|
|
close UUSTAT;
|
|
}
|
|
close SHELL unless $verbose;
|
|
|
|
exit 0;
|