From 3fa5ea5a5d1f50074bb00d4edeb7bd8792b60ce3 Mon Sep 17 00:00:00 2001 From: nathanlcarlson <22420382+nathanlcarlson@users.noreply.github.com> Date: Fri, 8 Nov 2024 02:02:29 -0600 Subject: [PATCH] Accomodate a smartmontools pre-7.3 bug (#238) * Accomodate a smartmontools pre-7.3 bug https://www.smartmontools.org/changeset/5283 --------- Signed-off-by: Nathan Carlson --- collect-smartctl-json.sh | 2 ++ readjson.go | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/collect-smartctl-json.sh b/collect-smartctl-json.sh index a658c37..3df5edd 100755 --- a/collect-smartctl-json.sh +++ b/collect-smartctl-json.sh @@ -54,6 +54,8 @@ for device in "${devices[@]}" echo -n "Collecting data for '${device}'..." # shellcheck disable=SC2086 data="$($SUDO smartctl ${smartctl_args} ${device})" + # Accommodate a smartmontools pre-7.3 bug + data=${data#" Pending defect count:"} type="$(echo "${data}" | "${json_tool}" "${json_args}" '.device.type')" family="$(echo "${data}" | "${json_tool}" "${json_args}" \ 'select(.model_family != null) | .model_family | sub(" |/" ; "_" ; "g") diff --git a/readjson.go b/readjson.go index 079abab..e163dcb 100644 --- a/readjson.go +++ b/readjson.go @@ -67,7 +67,9 @@ func readSMARTctl(logger *slog.Logger, device Device) (gjson.Result, bool) { if err != nil { logger.Warn("S.M.A.R.T. output reading", "err", err, "device", device.Info_Name) } - json := parseJSON(string(out)) + // Accommodate a smartmontools pre-7.3 bug + cleaned_out := strings.TrimPrefix(string(out), " Pending defect count:") + json := parseJSON(cleaned_out) rcOk := resultCodeIsOk(logger, device, json.Get("smartctl.exit_status").Int()) jsonOk := jsonIsOk(logger, json) logger.Debug("Collected S.M.A.R.T. json data", "device", device.Info_Name, "duration", time.Since(start))