mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-07-10 00:14:38 +00:00
Parse OPNsense 'Current Drive Temperature' SMART output
Back-port the smartctl regex half of v5 fix 0c2de2938 to v6 (the
prerelease-aware CompareVersions half is already present). smartctl text
fallback now matches 'Current Drive Temperature:' in addition to
'Current Temperature:', so OPNsense/pfSense disk temperatures are read
instead of reported as missing. Adds a regression test.
This commit is contained in:
parent
6b5f57a866
commit
9fe769ecdb
2 changed files with 24 additions and 1 deletions
|
|
@ -201,7 +201,7 @@ type smartTextFallback struct {
|
|||
|
||||
var (
|
||||
smartTextTempAttributeRE = regexp.MustCompile(`^\s*(190|194)\s+\S+.*-\s+(\d{1,3})\b`)
|
||||
smartTextCurrentTempRE = regexp.MustCompile(`(?i)^current temperature:\s*(\d{1,3})\b`)
|
||||
smartTextCurrentTempRE = regexp.MustCompile(`(?i)^current(?: drive)? temperature:\s*(\d{1,3})\b`)
|
||||
smartTextTemperatureRE = regexp.MustCompile(`(?i)^temperature:\s*(\d{1,3})\b`)
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -505,6 +505,29 @@ Current Temperature: 39 C
|
|||
}
|
||||
}
|
||||
|
||||
func TestParseSMARTOutputParsesCurrentDriveTemperature(t *testing.T) {
|
||||
// OPNsense/pfSense smartctl emits "Current Drive Temperature" rather than
|
||||
// "Current Temperature"; both must parse.
|
||||
output := []byte(`
|
||||
=== START OF INFORMATION SECTION ===
|
||||
Device Model: WDC WD40EFRX
|
||||
Serial Number: WD-456
|
||||
SMART overall-health self-assessment test result: PASSED
|
||||
Current Drive Temperature: 41 C
|
||||
`)
|
||||
|
||||
result, err := parseSMARTOutput(output, smartctlTarget{Path: "/dev/ada0"})
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
if result == nil {
|
||||
t.Fatal("expected result")
|
||||
}
|
||||
if result.Temperature != 41 {
|
||||
t.Fatalf("expected 'Current Drive Temperature' to parse as 41, got %#v", result)
|
||||
}
|
||||
}
|
||||
|
||||
func TestMatchesDeviceExclude(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue