mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-12 04:05:53 +02:00
Pakfire: Add new command line argument "status"
This enables Pakfire to return a Status-Summary for the Current Core-Update-Level, time since last updates, the availability of a core-/packet-update and if a reboot is required to complete an update. This can be used by monitoring agents (e.g. zabbix_agentd) to monitor the update status of the IPFire device. Signed-off-by: Alexander Koch <ipfire@starkstromkonsument.de> Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
committed by
Michael Tremer
parent
c818134f44
commit
090af02e07
@@ -108,6 +108,7 @@ sub usage {
|
||||
&Pakfire::message(" <update> - Contacts the servers for new lists of paks.");
|
||||
&Pakfire::message(" <upgrade> - Installs the latest version of all paks.");
|
||||
&Pakfire::message(" <list> - Outputs a short list with all available paks.");
|
||||
&Pakfire::message(" <status> - Outputs a summary about available core upgrades, updates and a required reboot");
|
||||
&Pakfire::message("");
|
||||
&Pakfire::message(" Global options:");
|
||||
&Pakfire::message(" --non-interactive --> Enables the non-interactive mode.");
|
||||
@@ -893,4 +894,55 @@ sub progress_bar {
|
||||
sprintf "$color{'lightgreen'}%-20s %7s |%-${width}s| %10s$color{'normal'}\r",$show_bfile, $progress, $char x (($width-1)*$got/$total). '>', beautifysize($got);
|
||||
}
|
||||
|
||||
sub updates_available {
|
||||
# Get packets with updates available
|
||||
my @upgradepaks = &Pakfire::dblist("upgrade", "noweb");
|
||||
|
||||
# Get the length of the returned array
|
||||
my $updatecount = scalar @upgradepaks;
|
||||
|
||||
return "$updatecount";
|
||||
}
|
||||
|
||||
sub coreupdate_available {
|
||||
eval(`grep "core_" $Conf::dbdir/lists/core-list.db`);
|
||||
if ("$core_release" > "$Conf::core_mine") {
|
||||
return "yes ($core_release)";
|
||||
}
|
||||
else {
|
||||
return "no";
|
||||
}
|
||||
}
|
||||
|
||||
sub reboot_required {
|
||||
if ( -e "/var/run/need_reboot" ) {
|
||||
return "yes";
|
||||
}
|
||||
else {
|
||||
return "no";
|
||||
}
|
||||
}
|
||||
|
||||
sub status {
|
||||
# General info
|
||||
my $return = "Core-Update-Level: $Conf::core_mine\n";
|
||||
$return .= "Last update: " . &General::age("/opt/pakfire/db/core/mine") . " ago\n";
|
||||
$return .= "Last core-list update: " . &General::age("/opt/pakfire/db/lists/core-list.db") . " ago\n";
|
||||
$return .= "Last server-list update: " . &General::age("/opt/pakfire/db/lists/server-list.db") . " ago\n";
|
||||
$return .= "Last packages-list update: " . &General::age("/opt/pakfire/db/lists/packages_list.db") . " ago\n";
|
||||
|
||||
# Get availability of core updates
|
||||
$return .= "Core-Update available: " . &Pakfire::coreupdate_available() . "\n";
|
||||
|
||||
# Get availability of package updates
|
||||
$return .= "Package-Updates available: " . &Pakfire::updates_available() . "\n";
|
||||
|
||||
# Test if reboot is required
|
||||
$return .= "Reboot required: " . &Pakfire::reboot_required() . "\n";
|
||||
|
||||
# Return status text
|
||||
print "$return";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
@@ -322,6 +322,8 @@
|
||||
} elsif ("$ARGV[1]" eq "upgrades") {
|
||||
system("rm -f /etc/fcron.daily/pakfire-upgrade");
|
||||
}
|
||||
} elsif ("$ARGV[0]" eq "status") {
|
||||
&Pakfire::status;
|
||||
} else {
|
||||
&Pakfire::usage;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user