--- loncom/build/CHECKRPMS 2007/12/04 04:43:24 1.10 +++ loncom/build/CHECKRPMS 2009/07/14 14:36:06 1.11 @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl # # The LearningOnline Network with CAPA # Checks status of RPM packages on system. @@ -30,7 +30,8 @@ =head1 NAME -B - automated status report about RPMs on a system. +B - automated status report about RPMs (RHEL/Fedora/CentOS/SuSE) + or debs (Debian/Ubuntu) on a system. =head1 DESCRIPTION @@ -41,9 +42,10 @@ The utility which is used to complete th fedora, rhel 5/5+, centos, scientific - yum suse 9.X and sles9 - you -suse 10.2,10.3 - zypper +suse 10.2,10.3,11.1 - zypper sles10,suse10.1 - rug rhel 4 - up2date +debian, ubuntu - apt-get others - check-rpms Created by amalgamating previous distribution-specific CHECKRPMS.dist files (where dist was one of: fedora, rhel, suse, sles10, default). @@ -89,9 +91,10 @@ if ($distro =~ /^fedora\d+$/) { $cmd = 'you'; &prepare_msg($tmpfile,$cmd); ($send,$addsubj) = &check_with_you($tmpfile); -} elsif ($distro =~ /^suse10\.(\d)$/) { +} elsif ($distro =~ /^suse(\d{2,})\.(\d+)$/) { my $version =$1; - if ($version > 1) { + my $subversion = $2; + if (($version > 10) || (($version == 10) && ($subversion > 1))) { $cmd = 'zypper up'; &prepare_msg($tmpfile,$cmd); ($send,$addsubj) = &check_with_zypper($tmpfile); @@ -123,6 +126,10 @@ if ($distro =~ /^fedora\d+$/) { $cmd = 'yum update'; &prepare_msg($tmpfile,$cmd); ($send,$addsubj) = &check_with_yum($tmpfile); +} elsif ($distro =~ /^(debian|ubuntu)\d+/) { + $cmd = 'apt-get upgrade'; + &prepare_msg($tmpfile,$cmd); + ($send,$addsubj) = &check_with_apt($tmpfile); } else { $cmd = '/usr/local/bin/check-rpms --update'; ($send,$addsubj) = &check_with_checkrpms($tmpfile); @@ -354,6 +361,51 @@ sub check_with_zypper { $sendflag = 1; } return ($sendflag,$append_to_subj); +} + +sub check_with_apt { + my ($tmpfile) = @_; + my $apt = '/usr/bin/apt-get'; + my $sendflag = 0; + my $append_to_subj; + my $header; + my @chg_package; + # + # Execute apt-get command to update distributions + system ("$apt update > /dev/null"); + my $returnvalue = $?>>8; + if ($returnvalue == 0) { + # Execute apt-get commands to check for upgrades + if (open (PIPE, "$apt -y --dry-run upgrade 2>&1 |")) { + my @output=; + close(PIPE); + chomp(@output); + foreach my $line (@output) { + $line =~ s/^\s+//; + my @items = split(/\s+/,$line); + if ($items[0] eq "Inst") { + push(@chg_package,$items[1]); + } + } + if (@chg_package > 0) { + $header = 'apt-get upgrade found the following packages need updating:'. + "\n\n"; + open(TMPFILE,">>$tmpfile"); + my $message = join("\n",@output); + print TMPFILE $header.$message; + close(TMPFILE); + $append_to_subj= ' deb packages to upgrade'; + $sendflag = 1; + } + } else { + $append_to_subj = ' Error running deb upgrade check'; + $sendflag = 1; + } + } else { + $append_to_subj = ' Error running deb update check'; + $sendflag = 1; + } + return ($sendflag,$append_to_subj); } sub check_with_checkrpms {