package machine import ( "io/ioutil" "mayfly-go/base/biz" ) const BasePath = "./devops/infrastructure/machine/shell/" // const MonitorTemp = "cpuRate:{cpuRate}%,memRate:{memRate}%,sysLoad:{sysLoad}\n" // shell文件内容缓存,避免每次读取文件 var shellCache = make(map[string]string) // func (c *Cli) GetProcessByName(name string) (*string, error) { // return c.Run(getShellContent("sys_info")) // } // func (c *Cli) GetSystemInfo() (*string, error) { // return c.Run(getShellContent("system_info")) // } // func (c *Cli) GetMonitorInfo() *entity.MachineMonitor { // mm := new(entity.MachineMonitor) // res, _ := c.Run(getShellContent("monitor")) // if res == nil { // return nil // } // resMap := make(map[string]interface{}) // utils.ReverStrTemplate(MonitorTemp, *res, resMap) // err := utils.Map2Struct(resMap, mm) // if err != nil { // global.Log.Error("解析machine monitor: %s", err.Error()) // return nil // } // mm.MachineId = c.machine.Id // mm.CreateTime = time.Now() // return mm // } // 获取shell内容 func getShellContent(name string) string { cacheShell := shellCache[name] if cacheShell != "" { return cacheShell } bytes, err := ioutil.ReadFile(BasePath + name + ".sh") biz.ErrIsNil(err, "获取shell文件失败") shellStr := string(bytes) shellCache[name] = shellStr return shellStr }