#!/usr/bin/perl -w # # The LearningOnline Network with CAPA # # Copyright Michigan State University Board of Trustees # # This file is part of the LearningOnline Network with CAPA (LON-CAPA). # # LON-CAPA is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # LON-CAPA is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with LON-CAPA; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # /home/httpd/html/adm/gpl.txt # # http://www.lon-capa.org/ # # (Navigate problems for statistical reports # =pod =head1 NAME B - automated status report about RPMs on a system, Up2date version. =head1 DESCRIPTION This file automates the usage of up2date to check for available updates to RHEL systems. Must be run as root or www. =cut use strict; use lib '/home/httpd/lib/perl/'; use LONCAPA::Configuration; my $up2date = '/usr/bin/up2date-nox'; my $tmpfile = '/tmp/CHECKRPMS.'.$$; # # Determine who we email my %perlvar=%{LONCAPA::Configuration::read_conf('loncapa.conf')}; my $emailto = "$perlvar{'lonAdmEMail'}"; my $subj=$perlvar{'lonHostID'}; undef(%perlvar); # # Put some nice text in $tmpfile my $hostname = `hostname`; chomp($hostname); open(TMPFILE,">$tmpfile"); print TMPFILE localtime(time).' '.$hostname."\n"; print TMPFILE <&1 |")) { my @result=; close(PIPE); if (@result > 0) { my $output = join('',@result); if ($output =~ /Fetching Obsoletes list/) { $up2date_error = 0; if ($output =~ /Name\s+Version\s+Rel\s+[\n\r\f]+\-+[\n\r\f]+(.+)/s) { my $packagelist = $1; unless (($packagelist =~ /^The following Packages were marked to be skipped by your configuration:/) || ($packagelist eq '')) { open(TMPFILE,">>$tmpfile"); print TMPFILE $packagelist; close(TMPFILE); $subj.= ' RPMS to upgrade'; # Send email system(qq{mail -s '$subj' $emailto < $tmpfile}); } } } } } if ($up2date_error) { # Send email $subj.= ' Error running RPM update script'; system(qq{mail -s '$subj' $emailto < $tmpfile}); }