Diff for /loncom/build/Attic/CHECKRPMS.default between versions 1.1 and 1.4

version 1.1, 2002/05/01 17:01:18 version 1.4, 2002/09/05 17:36:39
Line 1 Line 1
 #!/usr/bin/perl  #!/usr/bin/perl
   
 my $RHversion = (split /\s/, `cat /etc/redhat-release`)[4];  =pod
 my $FTPSERVER;  
 `ping -q -c 1 mirror.pa.msu.edu 2>/dev/null`;  =head1 NAME
 if (!$FTPSERVER and $?==0) {  
     `ncftpls ftp://mirror.pa.msu.edu`;  B<CHECKRPMS> - automated status report about RPMs on a system
     if ($?==0) {  
  $FTPSERVER="mirror.pa.msu.edu";  =head1 SYNOPSIS
    $FTPUPDATES="mirror.pa.msu.edu/linux/redhat/linux/updates/$RHversion/en/os";  
     }  ./CHECKRPMS
   
   or
   
   perl CHECKRPMS
   
   =head1 DESCRIPTION
   
   This file automates the usage of Martin Siegert's "check-rpms"
   script.  It runs through a list of possible mirror sites
   until it finds one with a reasonably good FTP connection.
   
   =head2 Future directions
   
   Eventually, this script may have a simple argument format
   that allows the user to VIEW, DOWNLOAD, or AUTOUPDATE their
   computer.  Or, this script may evolve into an interactive
   series of steps:  For example, there may be questions like this:
   
   =over 4
   
   =item *
   
   Do you want to (D)ownload or (A)utoupdate the RPMs
   in the list above?
   
   =item *
   
   Specify a download location for the RPMs
   (default=/tmp/update_my_rpms/)?
   
   =back
   
   Note that there are no current plans to automate a software upgrade of the
   kernel.  This step should be performed by a qualified system administrator.
   
   =head1 AUTHOR
   
   Scott Harrison, sharrison@users.sourceforge.net, 2002
   
   =cut
   
   # =================================================== READ IN COMMAND ARGUMENTS
   # ---------------------------------------------------- Process download option.
   my $download=shift(@ARGV);
   if ($download eq '--download')
     {
       if ($< != 0) # Download mode requires 'root'.
         {
           print('**** ERROR **** Download mode needs to be run as root'."\n");
    exit(1); # Exit with error status.
         }
       `rm -Rf /tmp/loncapa_rpm_updates`;
       $download='-v -dl -d /tmp/loncapa_rpm_updates'; # Part of check-rpms args.
     }
   else
     {
       $download='';
     }
   
   # =================================================== GENERAL INITIAL VARIABLES
   # ---------------- The FTP servers (and their directory paths) to check against
   my @serverpaths_to_try=(
      'mirror.pa.msu.edu/linux/redhat/linux/updates/',
      'rufus.w3.org/linux/redhat/linux/updates/',
      'distro.ibiblio.org/pub/linux/distributions/redhat/updates/',
      'limestone.uoregon.edu/redhat/updates/',
      'opnsrc.support.compaq.com/linux/redhat/updates.redhat.com/',
   );
   
   # --------------------------------------------------- Determine RedHat version.
   my $RHversion = (split /\s/, `cat /etc/redhat-release`)[4]; # - 6.2 or 7.3 or ?
   
    # ------------------------------------------- Use check-rpms command this way.
   my $checkcommand='check-rpms '.$download.' --rpmuser www -ftp';
   
   my $FTPSERVER; # ------------------------- the server portion of the serverpath
   my $FTPUPDATES; # ----------------------------- the actual update root location
   my @rpms; # ---------------------------------- this will store the list of RPMs
   my $goodoutput; # ------------------------------------ good stuff was returned!
   my $reallygoodoutput; # ------------------------------- you are 100% up-to-date
   
   # ----------------------------------------- Find the check-rpms script location
   if (-e './check-rpms') {
       $commandpre='perl ./';
   }
   elsif (-e 'loncom/build/check-rpms') {
       $commandpre='perl loncom/build/';
 }  }
 `ping -q -c 1 rufus.w3.org 2>/dev/null`;  else {
 if (!$FTPSERVER and $?==0) {      die("**** ERROR **** CANNOT FIND THE check-rpms SCRIPT\n");
     `ncftpls ftp://rufus.w3.org`;  }
   
   $checkcommand=$commandpre.$checkcommand;
   
   # =============== Go through all the servers until a decent connection is found
   print(<<END);
   THIS SCRIPT IS NOW PROBING SEVERAL FTP SERVERS....
   PLEASE BE PATIENT, THIS MAY TAKE A FEW MINUTES.
   END
   
   SERVERLOOP: foreach my $serverpath (@serverpaths_to_try) {
       $serverpath=~/^(.*?)\//;
       $FTPSERVER=$1;
       print "Trying $FTPSERVER...\n";
       `ping -c 1 $FTPSERVER 2>/dev/null`;
     if ($?==0) {      if ($?==0) {
  $FTPSERVER="rufus.w3.org";   print "$FTPSERVER found...\n";
  $FTPUPDATES="rufus.w3.org/linux/redhat/updates/$RHversion/en/os";   `ncftpls ftp://$FTPSERVER`;
    if ($?==0) {
       $FTPUPDATES="$serverpath$RHversion/en/os";
       print "$checkcommand $FTPUPDATES\n";
       if ($download) {
    $|=1;
    print `$checkcommand $FTPUPDATES 2>\&1`;
    exit(0);
       }
       @rpms=`$checkcommand $FTPUPDATES 2>\&1`;
       my $rpmtext=join('',@rpms);
       if ($rpmtext=~/You do not seem to have a/) {
    print "You do not have a 'www' user on your system.\n".
       "Please add this user and try this command again.\n";
    exit(1);
       }
       if ($rpmtext=~/This account is currently not/) { # ---------- uh-oh
    print "...strange error, moving on ($FTPSERVER)\n";
       }
       else { # ------------------------------------- the output is "good"
    $goodoutput=$rpmtext;
    unless (@rpms) {
       $reallygoodoutput=<<END;
   **** NOTE **** All RPMS on your system appear to be up to date.
   END
    }
    last SERVERLOOP;
       }
    }
    print "...cannot establish an ftp session with $FTPSERVER\n";
     }      }
       else {
    print "...cannot find $FTPSERVER on the network\n";
       }
   }
   if (!$goodoutput) {
       print "**** ERROR **** Cannot find a working ftp server.\n";
       exit(1);
 }  }
 if (!$FTPSERVER) {  elsif ($reallygoodoutput) {
     print "Cannot find a working ftp server.\n";      print $reallygoodoutput;
 }  }
 print "Using $FTPSERVER for ftp transaction...(please be patient)\n";  else {
 my @rpms=`perl loncom/build/check-rpms -ftp $FTPUPDATES`;      my $rpmcount=scalar(@rpms);
 if (@rpms) {  
     my $rpm_count=scalar(@rpms);  
     print(<<END);      print(<<END);
 **** WARNING **** You need to update at least $rpm_count RPMS shown in   **** WARNING **** You need to update at least $rpmcount RPMS shown in
 the list below.  THIS IS IMPORTANT FOR SECURITY.  the list below.  THIS IS IMPORTANT FOR SECURITY.
   
 END  END
     print join("\n",map {chomp;$_} @rpms)."\n";      print $goodoutput;
     print(<<END);      print(<<END);
   
 Please visit ftp://$FTPUPDATES  Please visit ftp://$FTPUPDATES
 and download the RPMS you need.  and download the RPMS you need.
 For instructions on working with (and upgrading) RPMS, please  For instructions on working with (and upgrading) RPMS, please
 visit http://www.rpm.org/max-rpm/.  visit http://www.rpm.org/max-rpm/.
 END  To automatically download these RPMs to /tmp/loncapa_rpm_updates/,
 }  run the CHECKRPMS command as "./CHECKRPMS --download"
 else {  
     print(<<END);  
 **** NOTE **** All RPMS on your system appear to be up to date.  
 END  END
 }  }

Removed from v.1.1  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>