On 2020/12/06 16:39, Otto Moerbeek wrote: > On Sun, Dec 06, 2020 at 03:31:19PM +0000, SW wrote: > > > On 06/12/2020 14:32, Otto Moerbeek wrote: > > > On Sun, Dec 06, 2020 at 02:19:05PM +0000, SW wrote: > > > > > >> Hi, > > >> I've been looking to have syspatch give me a quick indication of whether > > >> a reboot is likely to be required. As a quick and dirty check, I've just > > >> been treating "Were patches applied?" as the indicator. > > >> > > >> The following diff will cause syspatch to exit when applying patches > > >> with status code 0 only if patches were actually applied. > > >> > > >> My biggest concern is that it does cause a change in behaviour, so > > >> perhaps this either needs making into an option or a different approach > > >> entirely? > > >> > > >> --- syspatch Sun Dec 6 14:11:12 2020 > > >> +++ syspatch Sun Dec 6 14:10:23 2020 > > >> @@ -323,3 +323,9 @@ if ((OPTIND == 1)); then > > >> _PATCH_APPLIED=true > > >> done > > >> fi > > >> + > > >> +if [ "$_PATCH_APPLIED" = "true" ]; then > > >> + exit 0 > > >> +else > > >> + exit 1 > > >> +fi > > >> > > >> Thanks, > > >> S > > >> > > > I don't this is correct since it maks syspatch exit 1 on "no patches > > > applied". > > > > > > -Otto > > > . > > That's precisely the idea- from previous discussion with a couple of > > people there didn't seem to be an easy (programmatic) way to figure out > > whether syspatch had done anything or not. > > exit code 1 normally used for error conditions. A system being > up-to-date is not an error condition. > > -Otto > > > > > > Doing this would be a bit of a blunt way of handling things, and perhaps > > it would be better gated behind a flag, but is there a better way to > > make a scripted update work automatically (including rebooting as > > necessary)? > > > > Thanks, > > S >
How about the same exit codes as acme-client? They seem fairly reasonable - 0=updated, 1=failure, 2=no change. I use this as a workaround, which I am not at all happy with. date >> /var/log/updates syspatch 2>&1 | tee -a /var/log/updates | grep -q Installing && log="$log syspatches" && _reboot=true pkg_add -vu 2>&1 | tee -a /var/log/updates | grep -q Adding && log="$log packages" && _reboot=true fw_update -v 2>&1 | tee -a /var/log/updates | grep -q ": ok" && log="$log firmware" && _reboot=true if $_reboot; then logger "$log, rebooting" shutdown -r +1 fi