Version: 1.1
Type: Full Script
Category: Other
License: GNU General Public License
Description: Will display version of RPM's in current directory and in rpm database together. (requires Support functions snippet/code and site.cfg)
#!/cmi/bin/php -q
<?
/*
$Id: check_rpms,v 1.1 2002/03/16 21:17:19 grant Exp $
$Name: $
Script to check which of the RPMs in the current directory
haved been installed
*/
$file_list = array();
$file_list_count = 0;
$rpm_package = array();
$rpm_package_count = 0;
function scr($text="",$termination=0) {
switch ($termination) {
case "1":
echo $text;
break;
default:
echo $text."\n";
break;
}
}
function bit($text="",$termination=1) {
scr($text."... ",$termination);
}
function chk($text="",$termination=1) {
scr("CHK:".date("His").": $text ... ",$termination);
}
function err($text="") {
//get "ERR"
scr("ERR:".date("His").": $text");
scr("\nFinished Processing");
//echo -e "\n${RET}"
exit;
}
scr("Checking Current RPM Status");
scr(str_repeat("=",80));
$curdir=$PWD;
chk("Current Directory $curdir");
if (is_dir($curdir)) {
scr("Present");
} else {
scr("Missing?");
err("Can't Open Directory");
}
$command = '/bin/rpm -qa --qf "%{NAME};%{VERSION}-%{RELEASE}.%{ARCH}\n"';
//$command = '/bin/rpm -qa --qf "%{NAME}\n"';
chk("Opening Current Directory");
if ($dir=opendir($PWD)) {
scr("Handle: $dir");
chk("RPM: In Current Directory");
while ($file = chop(readdir($dir))) {
$item = ereg(".*\.rpm$",$file);
if ($item) {
$file = ereg_replace("\.rpm$","",$file);
$package = ereg_replace("-[0-9]+[0-9]*\..*$","",$file);
$version = str_replace("$package-","",$file);
$file_list[] = array(0=>$package, 1=>$version);
$file_list_count++;
}
}
scr("Count = $file_list_count");
if ($file_list_count) {
asort($file_list);
chk("RPM: In RPM Database");
$rpm = popen($command,"r");
if ($rpm) {
$rpm_package_count=0;
while (!feof($rpm)) {
$item = chop(fgets($rpm,512));
if ("$item" <> "" ) {
$parts = explode(";",$item);
$rpm_package[$parts[0]] = $parts[1];
$rpm_package_count++;
}
}
asort($rpm_package);
scr("Count = $rpm_package_count");
pclose($rpm);
} else {
err("Can't Obtain List from pipe");
}
scr(str_repeat("=",80));
scr(sprintf("%-30s%-25s%-25s","Package Name","Database Version","Disk Version"));
scr(str_repeat("=",80));
while ( list ($key,$file) = each ($file_list)) {
//scr(" ".date("His"),1);
if ($rpm_package[$file[0]]) {
scr(sprintf("%-29s %-24s %-24s",$file[0],$rpm_package[$file[0]],$file[1]));
} else {
scr(sprintf("%-29s %-24s %-24s",$file[0],"Absent",$file[1]));
}
$file_list_count++;
}
scr(str_repeat("=",80));
chk("RPMS: Checked");
scr("Count = $file_list_count");
/*
// This will print out the array
while ( list ( $key,$val ) = each ($rpm_package)) {
scr("KEY:$key:VAL:$val");
}
*/
}
scr("Processing Complete",0);
} else {
scr("Failed!");
err("Can't Open Directory");
}
/*
$Log: check_rpms,v $
Revision 1.1 2002/03/16 21:17:19 grant
Removed php3 extension
Revision 1.1 2002/03/14 08:57:18 grant
Completed initial program
*/
?>