Commit 657679e
Changed files (1)
internal
get
internal/get/smart.go
@@ -10,28 +10,48 @@ import (
"github.com/shirou/gopsutil/v4/disk"
)
+func nvmeSmart(device string) error {
+ var err error
+ dev, err := smart.OpenNVMe(device)
+ if err != nil {
+ return err
+ } else {
+ sm, err := dev.ReadSMART()
+ if err != nil {
+ return err
+ }
+ fmt.Printf("%s: %v\n", color.Green("Percent Used"), sm.PercentUsed)
+
+ return nil
+ }
+}
+
+func sataSmart(device string) error {
+ var err error
+ dev, err := smart.OpenSata(device)
+ if err != nil {
+ return err
+ } else {
+ sm, err := dev.ReadSMARTData()
+ if err != nil {
+ return err
+ }
+ fmt.Printf("%s: %v\n", color.Green("Media Wearout Indicator"), sm.Attrs[230].Current)
+
+ return nil
+ }
+}
+
func Smart() {
if runtime.GOOS == "linux" {
device := getRootDiskVolume()
- isNvme := true
- dev, err := smart.OpenNVMe(device)
+ err := nvmeSmart(device)
if err != nil {
- log.Fatal().Err(err).Msgf("Failed to open %s device. You probaby have to run as sudo", device)
- }
- defer func(dev smart.Device) {
- err = dev.Close()
- if err != nil {
- log.Fatal().Err(err).Msgf("Failed to close %s device", device)
- }
- }(dev)
-
- if isNvme {
- sm, err := dev.ReadSMART()
+ err = sataSmart(device)
if err != nil {
- log.Fatal().Msg("Failed to read SMART info")
+ log.Error().Err(err).Msg("Unrecognized device type. It's not NVME or SATA, or you didn't run as sudo")
}
- fmt.Printf("%s: %v\n", color.Green("Percent Used"), sm.PercentUsed)
}
} else {
log.Error().Msgf("%s is not supported\n", runtime.GOOS)