linux环境下 go语言识别biso数据
软件注册如果需要绑定硬件,多可文档系统识别机器的BIOS硬件信息给软件授权,如下是linux环境GO语言识别biso代码:
通过运行Linux命令dmidecode 得到硬件信息,需要程序程序有root权限。
package sysinfo import ( "fmt" "os/exec" "runtime" "strings" "testing" ) func RunPipeCmd(name string, arg ...string) (string, error) { cmd := exec.Command(name, arg...) // 命令的错误输出和标准输出都连接到同一个管道 stdout, err := cmd.StdoutPipe() cmd.Stderr = cmd.Stdout if err != nil { return "", err } if err = cmd.Start(); err != nil { return "", err } builder := new(strings.Builder) // 从管道中实时获取输出并打印到终端 for { tmp := make([]byte, 1024) _, err := stdout.Read(tmp) builder.WriteString(string(tmp)) if err != nil { break } } if err = cmd.Wait(); err != nil { return builder.String(), err } // return builder.String(), nil } func BIOS() string { s, _ := RunPipeCmd("dmidecode", "-t", "1") arr := strings.Split(s, "\n") for _, a := range arr { a = strings.ToLower(a) // x := strings.Index(a, "serial number:") if x >= 0 { s2 := a[x+14:] var bios = strings.ReplaceAll(s2, " ", "") return strings.TrimSpace(bios) } } return "" } func TestNtHardware(t *testing.T) { fmt.Printf("Sn: %s\n", BIOS()) }
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
