From 88bf11f5b12d5064ef05df3cf0905c2d4a90c8d6 Mon Sep 17 00:00:00 2001 From: wh1te909 Date: Tue, 3 May 2022 00:19:06 +0000 Subject: [PATCH] fix reboot required logic fixes #8 --- agent/agent_linux.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/agent/agent_linux.go b/agent/agent_linux.go index 3fbe9fc..1027344 100644 --- a/agent/agent_linux.go +++ b/agent/agent_linux.go @@ -70,12 +70,35 @@ func (a *Agent) GetDisks() []trmm.Disk { } func (a *Agent) SystemRebootRequired() (bool, error) { - paths := [2]string{"/var/run/reboot-required", "/usr/bin/needs-restarting"} + // deb + paths := [2]string{"/var/run/reboot-required", "/run/reboot-required"} for _, p := range paths { if trmm.FileExists(p) { return true, nil } } + // rhel + bins := [2]string{"/usr/bin/needs-restarting", "/bin/needs-restarting"} + for _, bin := range bins { + if trmm.FileExists(bin) { + opts := a.NewCMDOpts() + // https://man7.org/linux/man-pages/man1/needs-restarting.1.html + // -r Only report whether a full reboot is required (exit code 1) or not (exit code 0). + opts.Command = fmt.Sprintf("%s -r", bin) + out := a.CmdV2(opts) + + if out.Status.Error != nil { + a.Logger.Debugln("SystemRebootRequired(): ", out.Status.Error.Error()) + continue + } + + if out.Status.Exit == 1 { + return true, nil + } + + return false, nil + } + } return false, nil }