mirror of
https://github.com/MHA-Team/PTS-Team.git
synced 2026-02-15 18:52:34 +00:00
94 lines
2.9 KiB
Bash
94 lines
2.9 KiB
Bash
#!/bin/sh
|
|
|
|
UA=${UA:-"/usr/bin/ubuntu-advantage"}
|
|
UA_STATUS_CACHE=${UA_STATUS_CACHE:-"/var/cache/ubuntu-advantage-tools/ubuntu-advantage-status.cache"}
|
|
|
|
[ -x "$UA" ] || exit 0
|
|
|
|
print_patch_state() {
|
|
local patch_state="$1"
|
|
|
|
case "$patch_state" in
|
|
unapplied)
|
|
echo "Patches are available, will be deployed shortly."
|
|
;;
|
|
applied)
|
|
echo "All available patches applied."
|
|
;;
|
|
applied-with-bug|apply-failed)
|
|
echo "Live patching failed, please run \`ubuntu-bug linux\` to report a bug."
|
|
;;
|
|
nothing-to-apply)
|
|
echo "All available patches applied."
|
|
;;
|
|
applying)
|
|
echo "Live patching currently in progress."
|
|
;;
|
|
*)
|
|
echo "Unknown patch status. Please see /var/log/syslog for more information."
|
|
echo " Status: \"$patch_state\""
|
|
;;
|
|
esac
|
|
}
|
|
|
|
print_status() {
|
|
local check_state="$1"
|
|
local patch_state="$2"
|
|
|
|
echo -n " - "
|
|
case "$check_state" in
|
|
needs-check)
|
|
echo "Regular server check is pending."
|
|
;;
|
|
check-failed)
|
|
echo "Livepatch server check failed."
|
|
echo " Please see /var/log/syslog for more information."
|
|
;;
|
|
checked)
|
|
print_patch_state "$patch_state"
|
|
;;
|
|
*)
|
|
echo "Unknown check status. Please see /var/log/syslog for more information."
|
|
echo " Status: \"$check_state\""
|
|
;;
|
|
esac
|
|
}
|
|
|
|
|
|
service_name="livepatch"
|
|
# if there is no cache file yet (the cron job hasn't run yet), bail
|
|
[ -s "$UA_STATUS_CACHE" ] || exit 0
|
|
ua_status=$(cat "$UA_STATUS_CACHE")
|
|
# if there is no livepatch section at all in the output, silently
|
|
# bail
|
|
has_livepatch=$(echo "${ua_status}" | grep "^${service_name}")
|
|
[ -n "${has_livepatch}" ] || exit 0
|
|
livepatch_status=$(echo "$ua_status"|grep ^${service_name}:|sed -r -n "s,^${service_name}: (.*)$,\\1,p")
|
|
# only look for patchState and checkState inside the specific service
|
|
# block in the status output
|
|
patch_state=$(echo "$ua_status"|sed -r -n "/^${service_name}:/,/^\\S/s,^[[:blank:]]+patchState: (.*)$,\\1,p")
|
|
check_state=$(echo "$ua_status"|sed -r -n "/^${service_name}:/,/^\\S/s,^[[:blank:]]+checkState: (.*)$,\\1,p")
|
|
|
|
case "$livepatch_status" in
|
|
"disabled (not available)")
|
|
# do nothing
|
|
;;
|
|
"enabled")
|
|
echo
|
|
echo " * Canonical Livepatch is enabled."
|
|
print_status "${check_state}" "${patch_state}"
|
|
;;
|
|
"disabled")
|
|
echo
|
|
echo " * Canonical Livepatch is available for installation."
|
|
echo " - Reduce system reboots and improve kernel security. Activate at:"
|
|
echo " https://ubuntu.com/livepatch"
|
|
;;
|
|
*)
|
|
echo
|
|
echo " * Canonical Livepatch is in an unknown state."
|
|
echo " - Please see /var/log/syslog for more information."
|
|
echo " Status: \"$livepatch_status\""
|
|
;;
|
|
esac
|