运维开发网

go语言使用系统函数获取硬盘sn等信息

运维开发网 https://www.qedev.com 2020-12-24 12:39 出处:51CTO 作者:红尘世间
packagemainimport("encoding/json""golang.org/x/sys/unix""log""os""syscall""unsafe")funcFatalError(errerror){iferr!=nil{log.Fatal(err)}}funcmain(){varhdunix.HDDriveIDfd,err:=unix.Open(os.Args[1],os.O_R

package main

import (
    "golang.org/x/sys/unix"
    "log"
    "os"
    "syscall"
    "unsafe"
)

func FatalError(err error) {
    if err != nil {
        log.Fatal(err)
    }
}

func main() {
    var hd unix.HDDriveID
    fd, err := unix.Open(os.Args[1], os.O_RDONLY, 0660)
    FatalError(err)
    _, _, ErrOn := syscall.Syscall(syscall.SYS_IOCTL, uintptr(fd), unix.HDIO_GET_IDENTITY, uintptr(unsafe.Pointer(&hd)))
    if unix.ErrnoName(ErrOn) != "" {
        log.Fatal("Error: ", ErrOn)
    }

    var sn []byte
    var model []byte

    for _, char := range hd.Serial_no {
        sn = append(sn, char)
    }

    for _, char := range hd.Model {
        model = append(model, char)
    }

    log.Println(string(sn))
    log.Println(string(model))
}

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号