/* * @author: sre @date: 2023/11/19 0019 @desc: todo * */ package main import ( "github.com/gocarina/gocsv" "os" ) // Monitor for output type Monitor struct { IP string `csv:"ip"` Port string `csv:"port"` CPUCore int `csv:"cpu_core"` CPUUsage float64 `csv:"cpu_usage"` MemTotal float64 `csv:"mem_total"` MemUsage float64 `csv:"mem_usage"` NodeLoad1 float64 `csv:"node_load1"` NodeLoad5 float64 `csv:"node_load5"` NodeLoad15 float64 `csv:"node_load15"` ERROR string `csv:"error"` } // Host for input type Host struct { IP string `csv:"ip"` Port string `csv:"port"` } func GetHostListFromCSV() ([]*Host, error) { hostssFile, err := os.OpenFile(INPUTFILE, os.O_RDWR|os.O_CREATE, os.ModePerm) if err != nil { return nil, err } defer hostssFile.Close() hosts := []*Host{} if err := gocsv.UnmarshalFile(hostssFile, &hosts); err != nil { // Load hosts from file //if err := gocsv.UnmarshalBytes(CSVDATA, &hosts); err != nil { // Load hosts from file return nil, err } return hosts, nil }