Merge pull request #1217 from scop/feat/freebsd-disk-serial

[disk][freebsd] implement SerialNumberWithContext
pull/1231/head
shirou 3 years ago committed by GitHub
commit 29058848ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -4,10 +4,14 @@
package disk
import (
"bufio"
"bytes"
"context"
"encoding/binary"
"fmt"
"os/exec"
"strconv"
"strings"
"golang.org/x/sys/unix"
@ -163,7 +167,29 @@ func getFsType(stat unix.Statfs_t) string {
}
func SerialNumberWithContext(ctx context.Context, name string) (string, error) {
return "", common.ErrNotImplementedError
geom, err := exec.LookPath("geom")
if err != nil {
return "", fmt.Errorf("find geom: %w", err)
}
geomOut, err := invoke.CommandWithContext(ctx, geom, "disk", "list", name)
if err != nil {
return "", fmt.Errorf("exec geom: %w", err)
}
s := bufio.NewScanner(bytes.NewReader(geomOut))
serial := ""
for s.Scan() {
flds := strings.Fields(s.Text())
if len(flds) == 2 && flds[0] == "ident:" {
if flds[1] != "(null)" {
serial = flds[1]
}
break
}
}
if err = s.Err(); err != nil {
return "", err
}
return serial, nil
}
func LabelWithContext(ctx context.Context, name string) (string, error) {

Loading…
Cancel
Save