version 1.4, 2002/08/01 04:57:18
|
version 1.6, 2002/11/04 02:52:39
|
Line 90 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 203 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 263 $DEFCONF = "/usr/local/etc/check-rpms.co
|
Line 267 $DEFCONF = "/usr/local/etc/check-rpms.co
|
$DEFRPMDIR = "/mnt/redhat/RedHat/RPMS"; |
$DEFRPMDIR = "/mnt/redhat/RedHat/RPMS"; |
$DEFFTPSERVER = "updates.redhat.com"; |
$DEFFTPSERVER = "updates.redhat.com"; |
$DEFFTPUPDATES = "$RHversion/en/os"; |
$DEFFTPUPDATES = "$RHversion/en/os"; |
$DEFRPMUSER = "harris41"; |
$DEFRPMUSER = "nobody"; |
|
|
$RPMDIR=$DEFRPMDIR; |
$RPMDIR=$DEFRPMDIR; |
|
|
Line 297 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 = "harris41"; |
$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 318 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 387 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 556 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 565 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 610 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 647 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 681 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; |
} |
} |
|
|