zhangzengfei
2019-10-30 863c880b169a788fe74b27187baa2e3f60b72ed2
extend/sys/system.go
@@ -1,11 +1,7 @@
package sys
import (
   "encoding/json"
   "errors"
   "io/ioutil"
   "net/http"
   "net/url"
   "os"
   "os/exec"
   "strconv"
@@ -18,40 +14,11 @@
   "time"
)
func execRootCommand(cmd string) (bool, string) {
   serverPort := config.Server.SysServerPort
   if serverPort == "" {
      serverPort = "18081"
   }
   sysConfigServer := fmt.Sprintf("http://127.0.0.1:%s/api/v1/command/exec", serverPort)
   resp, err := http.PostForm(sysConfigServer, url.Values{"command": {cmd}})
func execRootCommand(cmd string) ([]byte, error) {
   pwd := config.Server.SudoPassword
   cmdStr := fmt.Sprintf("echo %s | sudo -S %s", pwd, cmd)
   if err != nil {
      return false, err.Error()
   }
   defer resp.Body.Close()
   body, err := ioutil.ReadAll(resp.Body)
   if err != nil {
      return false, err.Error()
   }
   type response struct {
      Code    int    `json:"code"`
      Success bool   `json:"success"`
      Msg     string `json:"msg"`
      CMD     string `json:"cmd"`
      Data    string `json:"data"`
   }
   var rsp response
   if err := json.Unmarshal(body, &rsp); err != nil {
      return false, err.Error()
   }
   fmt.Println(body)
   fmt.Println(rsp)
   return rsp.Success, rsp.Data
   return exec.Command("/bin/sh", "-c", cmdStr).Output()
}
// 检查 root权限
@@ -132,8 +99,9 @@
   }
   // # netconfig enp59s0f0 192.168.1.2 255.255.255.0 192.168.1.1 192.168.100.1
   cmdStr := fmt.Sprintf("%s %s %s %s %s %s", networkConfigScript, ifname, ipv4, netmask, gateway, dns)
   // return exec.Command("/bin/sh", "-c", cmdStr).Run() == nil
   return execRootCommand(cmdStr)
   stdout, err := execRootCommand(cmdStr)
   return err == nil, string(stdout)
}
// 配置时区
@@ -192,8 +160,10 @@
      return false
   }
   args := []string{"-s", newTime}
   exec.Command("date", args...).Run()
   // args := []string{"-s", newTime}
   // exec.Command("date", args...).Run()
   dateCMD := fmt.Sprintf("date -s \"%s\"", newTime)
   execRootCommand(dateCMD)
   stopNTPCron()
   return true
@@ -227,3 +197,9 @@
   ntpdate := fmt.Sprintf("/usr/sbin/ntpdate %s", server)
   return true, exec.Command("/bin/sh", "-c", ntpdate).Run()
}
func Reboot() (bool, string) {
   stdout, err := execRootCommand("reboot")
   return err == nil, string(stdout)
}