Skip to content

Commit 9042676

Browse files
authored
Merge pull request #43 from Starosdev/fix/upstream-pr-794-ignore-bit6-exitcode
fix(collector): ignore bit 6 in smartctl exit-code during detect
2 parents e21cac9 + 735fe2e commit 9042676

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

collector/pkg/detect/detect.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package detect
22

33
import (
44
"encoding/json"
5+
"errors"
56
"fmt"
67
"os"
8+
"os/exec"
79
"strings"
810

911
"github.com/analogj/scrutiny/collector/pkg/common/shell"
@@ -62,6 +64,17 @@ func (d *Detect) SmartCtlInfo(device *models.Device) error {
6264
args = append(args, fullDeviceName)
6365

6466
availableDeviceInfoJson, err := d.Shell.Command(d.Logger, d.Config.GetString("commands.metrics_smartctl_bin"), args, "", os.Environ())
67+
var exitErr *exec.ExitError
68+
if errors.As(err, &exitErr) {
69+
exitCode := exitErr.ExitCode()
70+
if exitCode&0xBF == 0 {
71+
d.Logger.Warnf("Successfully retrieved device information for %s, but received exit code %d, which is a non-fatal exit code. Continuing.", device.DeviceName, exitCode)
72+
} else {
73+
d.Logger.Errorf("Could not retrieve device information for %s: %v", device.DeviceName, err)
74+
return err
75+
}
76+
}
77+
6578
if err != nil {
6679
d.Logger.Errorf("Could not retrieve device information for %s: %v", device.DeviceName, err)
6780
return err

0 commit comments

Comments
 (0)