Éischt Import
This commit is contained in:
parent
c1ef28ee06
commit
4cad514e16
48
cpu.go
Normal file
48
cpu.go
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/shirou/gopsutil/v3/cpu"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Processeur struct {
|
||||||
|
ID int32 `json:"id"`
|
||||||
|
VendorID string `json:"vendoid"`
|
||||||
|
Family string `json:"family"`
|
||||||
|
Model string `json:"model"`
|
||||||
|
Mhz float64 `json:"freq"`
|
||||||
|
PerCent float64 `json:"pcent"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetProcesseur : Récupération des processeurs
|
||||||
|
func GetProcesseur() ([]Processeur, error) {
|
||||||
|
|
||||||
|
var cpus []Processeur
|
||||||
|
|
||||||
|
cpuInfos, err := cpu.Info()
|
||||||
|
if err != nil {
|
||||||
|
return []Processeur{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
percents, err := cpu.Percent(time.Second, true)
|
||||||
|
if err != nil {
|
||||||
|
return []Processeur{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
i := 0
|
||||||
|
for _, ci := range cpuInfos {
|
||||||
|
cpu := Processeur{}
|
||||||
|
cpu.ID = ci.CPU
|
||||||
|
cpu.VendorID = ci.VendorID
|
||||||
|
cpu.Family = ci.Family
|
||||||
|
cpu.Model = ci.Model
|
||||||
|
cpu.Mhz = ci.Mhz
|
||||||
|
cpu.PerCent = percents[i]
|
||||||
|
cpus = append(cpus, cpu)
|
||||||
|
i++
|
||||||
|
cpus = append(cpus, cpu)
|
||||||
|
}
|
||||||
|
|
||||||
|
return cpus, nil
|
||||||
|
}
|
79
disk.go
Normal file
79
disk.go
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/shirou/gopsutil/v3/disk"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Disque struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Device string `json:"device"`
|
||||||
|
MountPoint string `json:"mountpoint"`
|
||||||
|
FSType string `json:"fstype"`
|
||||||
|
UsedPerCent float64 `json:"usedpcent"`
|
||||||
|
Total uint64 `json:"total"`
|
||||||
|
Used uint64 `json:"used"`
|
||||||
|
Free uint64 `json:"free"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDisque : Récupération des disques
|
||||||
|
func GetDisque() ([]Disque, error) {
|
||||||
|
|
||||||
|
parts, err := disk.Partitions(true)
|
||||||
|
if err != nil {
|
||||||
|
return []Disque{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var disks []Disque
|
||||||
|
for i, part := range parts {
|
||||||
|
var d Disque
|
||||||
|
t := strings.Split(part.Device, "/")
|
||||||
|
if t[0] == "" {
|
||||||
|
diskInfo, _ := disk.Usage(part.Mountpoint)
|
||||||
|
d.ID = i
|
||||||
|
d.Device = part.Device
|
||||||
|
d.MountPoint = part.Mountpoint
|
||||||
|
d.FSType = part.Fstype
|
||||||
|
d.Total = diskInfo.Total
|
||||||
|
d.Used = diskInfo.Used
|
||||||
|
d.Free = diskInfo.Free
|
||||||
|
d.UsedPerCent = diskInfo.UsedPercent
|
||||||
|
disks = append(disks, d)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return disks, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get1Disque : Récupération d'un disque
|
||||||
|
func Get1Disque(id string) (Disque, error) {
|
||||||
|
n, err := strconv.ParseInt(id, 10, 32)
|
||||||
|
if err != nil {
|
||||||
|
return Disque{}, err
|
||||||
|
}
|
||||||
|
num := int((n))
|
||||||
|
|
||||||
|
parts, err := disk.Partitions(true)
|
||||||
|
if err != nil {
|
||||||
|
return Disque{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var d Disque
|
||||||
|
for i, part := range parts {
|
||||||
|
t := strings.Split(part.Device, "/")
|
||||||
|
if t[0] == "" && i == num {
|
||||||
|
diskInfo, _ := disk.Usage(part.Mountpoint)
|
||||||
|
d.ID = i
|
||||||
|
d.Device = part.Device
|
||||||
|
d.MountPoint = part.Mountpoint
|
||||||
|
d.FSType = part.Fstype
|
||||||
|
d.Total = diskInfo.Total
|
||||||
|
d.Used = diskInfo.Used
|
||||||
|
d.Free = diskInfo.Free
|
||||||
|
d.UsedPerCent = diskInfo.UsedPercent
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return d, nil
|
||||||
|
}
|
15
go.mod
Normal file
15
go.mod
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
module git.evoliatis.fr/scollado/system
|
||||||
|
|
||||||
|
go 1.19
|
||||||
|
|
||||||
|
require github.com/shirou/gopsutil/v3 v3.22.11
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||||
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
||||||
|
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
||||||
|
github.com/tklauser/go-sysconf v0.3.11 // indirect
|
||||||
|
github.com/tklauser/numcpus v0.6.0 // indirect
|
||||||
|
github.com/yusufpapurcu/wmi v1.2.2 // indirect
|
||||||
|
golang.org/x/sys v0.2.0 // indirect
|
||||||
|
)
|
38
go.sum
Normal file
38
go.sum
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||||
|
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||||
|
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
|
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
|
||||||
|
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
|
||||||
|
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||||
|
github.com/shirou/gopsutil/v3 v3.22.11 h1:kxsPKS+Eeo+VnEQ2XCaGJepeP6KY53QoRTETx3+1ndM=
|
||||||
|
github.com/shirou/gopsutil/v3 v3.22.11/go.mod h1:xl0EeL4vXJ+hQMAGN8B9VFpxukEMA0XdevQOe5MZ1oY=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||||
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||||
|
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||||
|
github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM=
|
||||||
|
github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI=
|
||||||
|
github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms=
|
||||||
|
github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4=
|
||||||
|
github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=
|
||||||
|
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||||
|
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
|
||||||
|
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
119
ip.go
Normal file
119
ip.go
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
type AdresseIP struct {
|
||||||
|
ID int `json:"id"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
Adresse string `json:"ip"`
|
||||||
|
Netmask string `json:"netmask"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// netmask : transformation du masque ivp4
|
||||||
|
func netmask(val string) string {
|
||||||
|
var tab [4]int64
|
||||||
|
tab[0], _ = strconv.ParseInt(val[0:2], 16, 64)
|
||||||
|
tab[1], _ = strconv.ParseInt(val[2:4], 16, 64)
|
||||||
|
tab[2], _ = strconv.ParseInt(val[4:6], 16, 64)
|
||||||
|
tab[3], _ = strconv.ParseInt(val[6:8], 16, 64)
|
||||||
|
|
||||||
|
return fmt.Sprint(tab[0], ".", tab[1], ".", tab[2], ".", tab[3])
|
||||||
|
}
|
||||||
|
|
||||||
|
// netmask6 : transformation du masque ivp6
|
||||||
|
func netmask6(val string) string {
|
||||||
|
var r string
|
||||||
|
|
||||||
|
for i := 0; i < 16; i++ {
|
||||||
|
r = r + val[i:i+2] + ":"
|
||||||
|
}
|
||||||
|
|
||||||
|
return r[:len(r)-1]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get1AdresseIP : Récupération d'une adresse IP
|
||||||
|
func Get1AdresseIP(id string) (AdresseIP, error) {
|
||||||
|
n, err := strconv.ParseInt(id, 10, 32)
|
||||||
|
if err != nil {
|
||||||
|
return AdresseIP{}, err
|
||||||
|
}
|
||||||
|
num := int((n))
|
||||||
|
|
||||||
|
addrs, err := net.InterfaceAddrs()
|
||||||
|
if err != nil {
|
||||||
|
return AdresseIP{}, err
|
||||||
|
}
|
||||||
|
ip := AdresseIP{}
|
||||||
|
for i, address := range addrs {
|
||||||
|
if i != num {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var mask, itype string
|
||||||
|
ipnet, _ := address.(*net.IPNet)
|
||||||
|
if ipnet.IP.To4() != nil {
|
||||||
|
mask = netmask(ipnet.Mask.String())
|
||||||
|
itype = "ipv4"
|
||||||
|
|
||||||
|
} else {
|
||||||
|
mask = netmask6(ipnet.Mask.String())
|
||||||
|
itype = "ipv6"
|
||||||
|
}
|
||||||
|
ip = AdresseIP{
|
||||||
|
ID: i,
|
||||||
|
Netmask: mask,
|
||||||
|
Adresse: ipnet.IP.String(),
|
||||||
|
Type: itype,
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return ip, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAdresseIP : Récupération de l'adresse IP
|
||||||
|
func GetAdresseIP() ([]AdresseIP, error) {
|
||||||
|
ips := []AdresseIP{}
|
||||||
|
addrs, err := net.InterfaceAddrs()
|
||||||
|
if err != nil {
|
||||||
|
return []AdresseIP{}, err
|
||||||
|
}
|
||||||
|
for i, address := range addrs {
|
||||||
|
var mask string
|
||||||
|
ipnet, _ := address.(*net.IPNet)
|
||||||
|
if ipnet.IP.To4() != nil {
|
||||||
|
mask = netmask(ipnet.Mask.String())
|
||||||
|
|
||||||
|
} else {
|
||||||
|
mask = netmask6(ipnet.Mask.String())
|
||||||
|
}
|
||||||
|
ip := AdresseIP{
|
||||||
|
ID: i,
|
||||||
|
Netmask: mask,
|
||||||
|
Adresse: ipnet.IP.String(),
|
||||||
|
Type: "local",
|
||||||
|
}
|
||||||
|
ips = append(ips, ip)
|
||||||
|
}
|
||||||
|
return ips, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetPasserelle : IP Externe
|
||||||
|
func GetPasserelle() (AdresseIP, error) {
|
||||||
|
resp, err := http.Get("http://ifconfig.me")
|
||||||
|
if err != nil {
|
||||||
|
return AdresseIP{}, err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
content, _ := io.ReadAll(resp.Body)
|
||||||
|
ip := AdresseIP{
|
||||||
|
Type: "passerelle",
|
||||||
|
Adresse: string(content),
|
||||||
|
Netmask: "0.0.0.0",
|
||||||
|
}
|
||||||
|
return ip, nil
|
||||||
|
}
|
25
load.go
Normal file
25
load.go
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/shirou/gopsutil/v3/load"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Charge struct {
|
||||||
|
Load1 float64 `json:"load1"`
|
||||||
|
Load5 float64 `json:"load5"`
|
||||||
|
Load15 float64 `json:"load15"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCharge : Récupération de la charge
|
||||||
|
func GetCharge() (Charge, error) {
|
||||||
|
info, err := load.Avg()
|
||||||
|
if err != nil {
|
||||||
|
return Charge{}, err
|
||||||
|
}
|
||||||
|
l := Charge{
|
||||||
|
Load1: info.Load1,
|
||||||
|
Load5: info.Load5,
|
||||||
|
Load15: info.Load15,
|
||||||
|
}
|
||||||
|
return l, nil
|
||||||
|
}
|
86
main.go
Normal file
86
main.go
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type API struct {
|
||||||
|
URL string `json:"url"`
|
||||||
|
Methode string `json:"methode"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAPI : Liste des méthodes par API
|
||||||
|
func GetAPI() []API {
|
||||||
|
return []API{
|
||||||
|
{
|
||||||
|
URL: "/api",
|
||||||
|
Methode: "GetAPI",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/processeur",
|
||||||
|
Methode: "GetProcesseur",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/disque",
|
||||||
|
Methode: "GetDisque",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/disque/{id}",
|
||||||
|
Methode: "Get1Disque",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/ip",
|
||||||
|
Methode: "GetAdresseIP",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/ip/{id}",
|
||||||
|
Methode: "Get1AdresseIP",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/ip/passerelle",
|
||||||
|
Methode: "GetPasserelle",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/charge",
|
||||||
|
Methode: "GetCharge",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/memoire",
|
||||||
|
Methode: "GetMemoire",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/carte",
|
||||||
|
Methode: "GetCarteReseau",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/carte/{name}",
|
||||||
|
Methode: "Get1CarteReseau",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/processus",
|
||||||
|
Methode: "GetProcessus",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/processus/{id}",
|
||||||
|
Methode: "Get1Processus",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
URL: "/processus/kill/{id}",
|
||||||
|
Methode: "Kill1Processus",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// EnvoiJSON : envoie le JSON
|
||||||
|
func EnvoiJSON(ps any, url string, w http.ResponseWriter) {
|
||||||
|
// Transformation JSON
|
||||||
|
j, err := json.Marshal(ps)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("ERREUR %s : %v", url, err)
|
||||||
|
}
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
fmt.Fprint(w, string(j))
|
||||||
|
}
|
27
memoy.go
Normal file
27
memoy.go
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/shirou/gopsutil/v3/mem"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Memoire struct {
|
||||||
|
Total uint64 `json:"total"`
|
||||||
|
Available uint64 `json:"available"`
|
||||||
|
Used uint64 `json:"used"`
|
||||||
|
Free uint64 `json:"free"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetMemoire : Récupération de la mémoire
|
||||||
|
func GetMemoire() (Memoire, error) {
|
||||||
|
memInfo, err := mem.VirtualMemory()
|
||||||
|
if err != nil {
|
||||||
|
return Memoire{}, err
|
||||||
|
}
|
||||||
|
var mem Memoire
|
||||||
|
mem.Available = memInfo.Available
|
||||||
|
mem.Free = memInfo.Free
|
||||||
|
mem.Total = memInfo.Total
|
||||||
|
mem.Used = memInfo.Used
|
||||||
|
|
||||||
|
return mem, nil
|
||||||
|
}
|
79
net.go
Normal file
79
net.go
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/shirou/gopsutil/v3/net"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CarteReseau struct {
|
||||||
|
Name string
|
||||||
|
MTU int
|
||||||
|
MacAddress string
|
||||||
|
BytesSent uint64
|
||||||
|
BytesRecv uint64
|
||||||
|
PacketsSent uint64
|
||||||
|
PacketsRecv uint64
|
||||||
|
ErrorsIn uint64
|
||||||
|
ErrorsOut uint64
|
||||||
|
Addrs []net.InterfaceAddr
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get1CarteReseau : Carte réseau
|
||||||
|
func Get1CarteReseau(name string) (CarteReseau, error) {
|
||||||
|
var c CarteReseau
|
||||||
|
|
||||||
|
cards, err := net.Interfaces()
|
||||||
|
if err != nil {
|
||||||
|
return CarteReseau{}, err
|
||||||
|
}
|
||||||
|
infos, err := net.IOCounters(true)
|
||||||
|
if err != nil {
|
||||||
|
return CarteReseau{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, card := range cards {
|
||||||
|
if infos[i].Name == name {
|
||||||
|
c.Name = infos[i].Name
|
||||||
|
c.MTU = card.MTU
|
||||||
|
c.MacAddress = card.HardwareAddr
|
||||||
|
c.BytesSent = infos[i].BytesSent
|
||||||
|
c.BytesRecv = infos[i].BytesRecv
|
||||||
|
c.PacketsSent = infos[i].PacketsSent
|
||||||
|
c.PacketsRecv = infos[i].PacketsRecv
|
||||||
|
c.ErrorsIn = infos[i].Errin
|
||||||
|
c.ErrorsOut = infos[i].Errout
|
||||||
|
c.Addrs = card.Addrs
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return c, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCarteReseau : Cartes réseaux
|
||||||
|
func GetCarteReseau() ([]CarteReseau, error) {
|
||||||
|
var result []CarteReseau
|
||||||
|
|
||||||
|
cards, err := net.Interfaces()
|
||||||
|
if err != nil {
|
||||||
|
return []CarteReseau{}, err
|
||||||
|
}
|
||||||
|
infos, err := net.IOCounters(true)
|
||||||
|
if err != nil {
|
||||||
|
return []CarteReseau{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, card := range cards {
|
||||||
|
var c CarteReseau
|
||||||
|
c.Name = infos[i].Name
|
||||||
|
c.MTU = card.MTU
|
||||||
|
c.MacAddress = card.HardwareAddr
|
||||||
|
c.BytesSent = infos[i].BytesSent
|
||||||
|
c.BytesRecv = infos[i].BytesRecv
|
||||||
|
c.PacketsSent = infos[i].PacketsSent
|
||||||
|
c.PacketsRecv = infos[i].PacketsRecv
|
||||||
|
c.ErrorsIn = infos[i].Errin
|
||||||
|
c.ErrorsOut = infos[i].Errout
|
||||||
|
c.Addrs = card.Addrs
|
||||||
|
result = append(result, c)
|
||||||
|
}
|
||||||
|
return result, nil
|
||||||
|
}
|
62
processus.go
Normal file
62
processus.go
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package system
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/shirou/gopsutil/v3/process"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Processus struct {
|
||||||
|
User string `json:"user"`
|
||||||
|
Pid int32 `json:"pid"`
|
||||||
|
Cpu float64 `json:"cpu"`
|
||||||
|
Mem float32 `json:"mem"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
Status []string `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get1Processus : récupération d'un processus
|
||||||
|
func Get1Processus(id string) (Processus, error) {
|
||||||
|
i, err := strconv.ParseInt(id, 10, 32)
|
||||||
|
if err != nil {
|
||||||
|
return Processus{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
processes, err := process.Processes()
|
||||||
|
if err != nil {
|
||||||
|
return Processus{}, err
|
||||||
|
}
|
||||||
|
var ps Processus
|
||||||
|
for _, process := range processes {
|
||||||
|
if int32(i) == process.Pid {
|
||||||
|
ps.User, _ = process.Username()
|
||||||
|
ps.Pid = process.Pid
|
||||||
|
ps.Cpu, _ = process.CPUPercent()
|
||||||
|
ps.Mem, _ = process.MemoryPercent()
|
||||||
|
ps.Name, _ = process.Name()
|
||||||
|
ps.Status, _ = process.Status()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ps, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetProcessus : récupération des processus
|
||||||
|
func GetProcessus() ([]Processus, error) {
|
||||||
|
processes, err := process.Processes()
|
||||||
|
if err != nil {
|
||||||
|
return []Processus{}, err
|
||||||
|
}
|
||||||
|
var pslist []Processus
|
||||||
|
for _, process := range processes {
|
||||||
|
var ps Processus
|
||||||
|
ps.User, _ = process.Username()
|
||||||
|
ps.Pid = process.Pid
|
||||||
|
ps.Cpu, _ = process.CPUPercent()
|
||||||
|
ps.Mem, _ = process.MemoryPercent()
|
||||||
|
ps.Name, _ = process.Name()
|
||||||
|
ps.Status, _ = process.Status()
|
||||||
|
pslist = append(pslist, ps)
|
||||||
|
}
|
||||||
|
return pslist, nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user