version 1.3, 2002/04/13 19:13:06
|
version 1.6, 2002/11/04 02:52:39
|
Line 3
|
Line 3
|
# check-rpms, version 2.1.1 |
# check-rpms, version 2.1.1 |
# Martin Siegert, SFU, siegert@sfu.ca, Feb 02 |
# Martin Siegert, SFU, siegert@sfu.ca, Feb 02 |
# |
# |
|
# documentation and minor patches, |
|
# Scott Harrison sharrison@users.sourceforge.net 2002 |
|
|
=pod |
=pod |
|
|
=head1 NAME |
=head1 NAME |
Line 87 use Getopt::Long;
|
Line 90 use Getopt::Long;
|
|
|
my $retval = &GetOptions("verbose|v","lm|list-missing","lq|list-questionable", |
my $retval = &GetOptions("verbose|v","lm|list-missing","lq|list-questionable", |
"dir|d=s","ftp:s","noftp","download|dl","recheck|r", |
"dir|d=s","ftp:s","noftp","download|dl","recheck|r", |
"nk|no-kernel","update","c=s"); |
"nk|no-kernel","update","c=s","rpmuser=s"); |
|
|
=pod |
=pod |
|
|
Line 200 example configuration file is given belo
|
Line 203 example configuration file is given belo
|
is omitted, I<check-rpms> will use the default configuration |
is omitted, I<check-rpms> will use the default configuration |
file I</usr/local/etc/check-rpms.conf>, if it exists. |
file I</usr/local/etc/check-rpms.conf>, if it exists. |
|
|
|
=item B<--rpmuser> I<user name> |
|
|
|
Specifying $RPMUSER on the command line. |
|
|
=back |
=back |
|
|
=head1 EXAMPLES |
=head1 EXAMPLES |
Line 294 Example configuration file:
|
Line 301 Example configuration file:
|
|
|
# $RPMUSER is the user name that check-rpms switches to for most of |
# $RPMUSER is the user name that check-rpms switches to for most of |
# the script when run as root |
# the script when run as root |
$RPMUSER = "joe"; |
$RPMUSER = "adminjoe"; |
|
|
# $FTPSERVER and $FTPUPDATES are the hostname of a ftp server and the |
# $FTPSERVER and $FTPUPDATES are the hostname of a ftp server and the |
# directory where RPM updates can be found without the <arch> directory. |
# directory where RPM updates can be found without the <arch> directory. |
Line 315 if ( -f $CONF) {
|
Line 322 if ( -f $CONF) {
|
$FTPUPDATES = $DEFFTPUPDATES; |
$FTPUPDATES = $DEFFTPUPDATES; |
} |
} |
|
|
|
if ($opt_rpmuser) { |
|
$DEFRPMUSER = $opt_rpmuser; |
|
} |
|
|
# check whether we are running as root |
# check whether we are running as root |
if ($< == 0){ |
if ($< == 0){ |
if (! $RPMUSER) { |
if (! $RPMUSER) { |
Line 384 if (defined $opt_ftp || $FTP) {
|
Line 395 if (defined $opt_ftp || $FTP) {
|
die "Either $RPMDIR does not exist or it does not contain any packages.\n"; |
die "Either $RPMDIR does not exist or it does not contain any packages.\n"; |
} |
} |
|
|
|
my $FTPSERVER_auth = $FTPSERVER; |
|
$FTPSERVER_auth =~ s/^(\w+)\:(\w+)\@/-u $1 -p $2 /; |
|
|
if ($recheck) { |
if ($recheck) { |
$questionable=1; |
$questionable=1; |
} |
} |
Line 392 if (defined $opt_update || defined $opt_
|
Line 406 if (defined $opt_update || defined $opt_
|
$no_kernel=1; |
$no_kernel=1; |
} |
} |
|
|
$PROC = `grep -i athlon /proc/cpuinfo`; |
$PROC = `grep -i "athlon\|amd" /proc/cpuinfo`; |
if ( ! "$PROC" ) { |
if ( ! "$PROC" ) { |
$PROC = `uname -m`; |
$PROC = `uname -m`; |
chomp($PROC); |
chomp($PROC); |
Line 553 for (@local_rpm_list) {
|
Line 567 for (@local_rpm_list) {
|
} |
} |
} |
} |
|
|
|
|
if ($recheck && @q_updates) { |
if ($recheck && @q_updates) { |
if ($ftp) { |
if ($ftp) { |
for (@q_updates) { |
for (@q_updates) { |
Line 562 if ($recheck && @q_updates) {
|
Line 577 if ($recheck && @q_updates) {
|
if ($verbose) { |
if ($verbose) { |
print "Getting questionable packages form $FTPSERVER ...\n"; |
print "Getting questionable packages form $FTPSERVER ...\n"; |
} |
} |
my $status = system("$FTPGET $FTPSERVER $RPMDIR @ftp_files"); |
my $status = system("$FTPGET $FTPSERVER_auth $RPMDIR @ftp_files"); |
if ($status) { |
if ($status) { |
if ($< == 0) { |
if ($< == 0) { |
# if we are running as root exit to avoid symlink attacks, etc. |
# if we are running as root exit to avoid symlink attacks, etc. |
|
print("DEBUG DEBUG $FTPGET $FTPSERVER_auth $RPMDIR @ftp_files"); |
die "$FTPGET failed with status ", $status/256, ".\n"; |
die "$FTPGET failed with status ", $status/256, ".\n"; |
} else { |
} else { |
print STDERR "warning: $FTPGET failed with status ", $status/256, ".\n"; |
print STDERR "warning: $FTPGET failed with status ", $status/256, ".\n"; |
Line 607 if (@updates) {
|
Line 623 if (@updates) {
|
if ($verbose) { |
if ($verbose) { |
print "starting downloads ... \n"; |
print "starting downloads ... \n"; |
} |
} |
my $status = system("$FTPGET $FTPSERVER $RPMDIR @ftp_files"); |
my $status = system("$FTPGET $FTPSERVER_auth $RPMDIR @ftp_files"); |
if ($status) { |
if ($status) { |
if ($< == 0) { |
if ($< == 0) { |
# if we are running as root exit to avoid symlink attacks, etc. |
# if we are running as root exit to avoid symlink attacks, etc. |
Line 644 if (@q_updates && $questionable) {
|
Line 660 if (@q_updates && $questionable) {
|
} |
} |
if ($verbose) { |
if ($verbose) { |
print "starting downloads ... \n"; |
print "starting downloads ... \n"; |
system("$FTPGET $FTPSERVER $$RPMDIR @ftp_files"); |
system("$FTPGET $FTPSERVER_auth $$RPMDIR @ftp_files"); |
print "... done.\n"; |
print "... done.\n"; |
} else { |
} else { |
system("$FTPGET $FTPSERVER $$RPMDIR @ftp_files"); |
system("$FTPGET $FTPSERVER_auth $$RPMDIR @ftp_files"); |
} |
} |
} |
} |
} |
} |
Line 678 sub ftp_download {
|
Line 694 sub ftp_download {
|
my ($arch) = m/[^ ]*-[^-]+-[^-]*\.(\w+)\.rpm$/; |
my ($arch) = m/[^ ]*-[^-]+-[^-]*\.(\w+)\.rpm$/; |
push(@ftp_packages,"$FTPDIR/$arch/$_"); |
push(@ftp_packages,"$FTPDIR/$arch/$_"); |
} |
} |
my $status = system("$FTPGET $FTPSERVER $downloaddir @ftp_packages"); |
my $status = system("$FTPGET $FTPSERVER_auth $downloaddir @ftp_packages"); |
return $status; |
return $status; |
} |
} |
|
|