Получение системной информации

110 views
Skip to first unread message

forwo...@gmail.com

unread,
Oct 24, 2016, 3:28:16 PM10/24/16
to Golang Russian
Подскажите пожалуйста как с помощью go можно получить

"Серийный номер раздела жесткого диска, MAC-адрес сетевой карты"

Daniel Podolsky

unread,
Oct 24, 2016, 3:36:05 PM10/24/16
to gola...@googlegroups.com
2016-10-24 22:28 GMT+03:00 <forwo...@gmail.com>:
> MAC-адрес сетевой карты

https://golang.org/pkg/net/#Interfaces

forwo...@gmail.com

unread,
Oct 24, 2016, 6:37:29 PM10/24/16
to Golang Russian
Спасибо, то, что надо, а как быть с получением серийного номера раздела жесткого диска?

Daniel Podolsky

unread,
Oct 24, 2016, 7:04:24 PM10/24/16
to gola...@googlegroups.com
> а как быть с получением серийного номера раздела
> жесткого диска?
не знаю.

на линуксе можно просто читать /dev, а с остальными платформами - не в курсе

Евгений Завьялов

unread,
Oct 25, 2016, 5:47:38 AM10/25/16
to Golang Russian
в Win можно так:

//серийный номер тома
func main() {
    out, err := exec.Command("cmd.exe", "/c", "vol c:").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%s\n", out)
}

//серийный номер диска
func main() {
    out, err := exec.Command("cmd.exe", "/c", "wmic DISKDRIVE GET SerialNumber /FORMAT:list").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%s\n", out)
}


вторник, 25 октября 2016 г., 1:37:29 UTC+3 пользователь forwo...@gmail.com написал:

Евгений Завьялов

unread,
Oct 25, 2016, 5:54:40 AM10/25/16
to Golang Russian
//mac
func main() {
    inets, _ := net.Interfaces()
    for _, i := range inets {
        if mac := i.HardwareAddr.String(); mac != "" {
            fmt.Println("MAC:", mac)
            fmt.Println("Name", i.Name)
            addrs, _ := i.Addrs()
            for _, addr := range addrs {
                if addr := addr.String(); addr != "" {
                    fmt.Println("Addr:", addr)
                }
            }
        }
    }
}

forwo...@gmail.com

unread,
Oct 25, 2016, 9:44:28 AM10/25/16
to Golang Russian
Евгений Завьялов
А можете привести пример кода, если использовать win api для получения номера тома?

Евгений Завьялов

unread,
Oct 28, 2016, 4:19:13 AM10/28/16
to Golang Russian
Не знаю, плотно с WinAPI не работаю. Использую Lin

Погуглил: может так:

пример где var RootPathName = `C:\`
и вывести:
fmt.Println(syscall.UTF16ToString(VolumeSerialNumber))




вторник, 25 октября 2016 г., 16:44:28 UTC+3 пользователь forwo...@gmail.com написал:
Reply all
Reply to author
Forward
0 new messages