mirror of
https://github.com/shirou/gopsutil.git
synced 2025-04-26 13:48:59 +08:00
Merge pull request #1059 from d1ss0nanz/issue1058
use ioreg to read IOPlatformUUID as HostID
This commit is contained in:
commit
e032a1c81d
@ -6,6 +6,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
"errors"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
@ -21,11 +22,27 @@ import (
|
|||||||
const USER_PROCESS = 7
|
const USER_PROCESS = 7
|
||||||
|
|
||||||
func HostIDWithContext(ctx context.Context) (string, error) {
|
func HostIDWithContext(ctx context.Context) (string, error) {
|
||||||
uuid, err := unix.Sysctl("kern.uuid")
|
ioreg, err := exec.LookPath("ioreg")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return strings.ToLower(uuid), err
|
|
||||||
|
out, err := invoke.CommandWithContext(ctx, ioreg, "-rd1", "-c", "IOPlatformExpertDevice")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, line := range strings.Split(string(out), "\n") {
|
||||||
|
if strings.Contains(line, "IOPlatformUUID") {
|
||||||
|
parts := strings.SplitAfter(line, `" = "`)
|
||||||
|
if len(parts) == 2 {
|
||||||
|
uuid := strings.TrimRight(parts[1], `"`)
|
||||||
|
return strings.ToLower(uuid), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", errors.New("cannot find host id")
|
||||||
}
|
}
|
||||||
|
|
||||||
func numProcs(ctx context.Context) (uint64, error) {
|
func numProcs(ctx context.Context) (uint64, error) {
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
"errors"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
@ -21,11 +22,27 @@ import (
|
|||||||
const user_PROCESS = 7
|
const user_PROCESS = 7
|
||||||
|
|
||||||
func HostIDWithContext(ctx context.Context) (string, error) {
|
func HostIDWithContext(ctx context.Context) (string, error) {
|
||||||
uuid, err := unix.Sysctl("kern.uuid")
|
ioreg, err := exec.LookPath("ioreg")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return strings.ToLower(uuid), err
|
|
||||||
|
out, err := invoke.CommandWithContext(ctx, ioreg, "-rd1", "-c", "IOPlatformExpertDevice")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, line := range strings.Split(string(out), "\n") {
|
||||||
|
if strings.Contains(line, "IOPlatformUUID") {
|
||||||
|
parts := strings.SplitAfter(line, `" = "`)
|
||||||
|
if len(parts) == 2 {
|
||||||
|
uuid := strings.TrimRight(parts[1], `"`)
|
||||||
|
return strings.ToLower(uuid), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", errors.New("cannot find host id")
|
||||||
}
|
}
|
||||||
|
|
||||||
func numProcs(ctx context.Context) (uint64, error) {
|
func numProcs(ctx context.Context) (uint64, error) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user