From 863c880b169a788fe74b27187baa2e3f60b72ed2 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@iotlink.com> Date: 星期三, 30 十月 2019 15:19:23 +0800 Subject: [PATCH] feat: add reboot --- extend/sys/system.go | 58 +++++++++++++++++----------------------------------------- 1 files changed, 17 insertions(+), 41 deletions(-) diff --git a/extend/sys/system.go b/extend/sys/system.go index 526093e..cccba7e 100644 --- a/extend/sys/system.go +++ b/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) +} -- Gitblit v1.8.0