From d21ed2b40db891ac101a4919d7c7bf00e46e513c Mon Sep 17 00:00:00 2001 From: Shirou WAKAYAMA Date: Fri, 1 Apr 2016 22:13:05 +0900 Subject: [PATCH] search path via exec.LookPath before actual invoke. --- cpu/cpu_darwin.go | 9 ++++++--- cpu/cpu_freebsd.go | 6 +++++- cpu/cpu_linux.go | 6 +++++- disk/disk_linux.go | 7 ++++++- host/host_darwin.go | 8 ++++++-- host/host_freebsd.go | 8 ++++++-- host/host_linux.go | 6 +++++- internal/common/common_darwin.go | 7 ++++++- internal/common/common_freebsd.go | 6 +++++- mem/mem_darwin.go | 3 +++ mem/mem_darwin_nocgo.go | 6 +++++- process/process_posix.go | 6 +++++- 12 files changed, 63 insertions(+), 15 deletions(-) diff --git a/cpu/cpu_darwin.go b/cpu/cpu_darwin.go index 36ae562..fbb74a8 100644 --- a/cpu/cpu_darwin.go +++ b/cpu/cpu_darwin.go @@ -32,8 +32,11 @@ func Times(percpu bool) ([]TimesStat, error) { // Returns only one CPUInfoStat on FreeBSD func Info() ([]InfoStat, error) { var ret []InfoStat - - out, err := exec.Command("/usr/sbin/sysctl", "machdep.cpu").Output() + sysctl, err := exec.LookPath("/usr/sbin/sysctl") + if err != nil { + return ret, err + } + out, err := exec.Command(sysctl, "machdep.cpu").Output() if err != nil { return ret, err } @@ -87,7 +90,7 @@ func Info() ([]InfoStat, error) { // Use the rated frequency of the CPU. This is a static value and does not // account for low power or Turbo Boost modes. - out, err = exec.Command("/usr/sbin/sysctl", "hw.cpufrequency").Output() + out, err = exec.Command(sysctl, "hw.cpufrequency").Output() if err != nil { return ret, err } diff --git a/cpu/cpu_freebsd.go b/cpu/cpu_freebsd.go index fb962e7..ce1adf3 100644 --- a/cpu/cpu_freebsd.go +++ b/cpu/cpu_freebsd.go @@ -25,7 +25,11 @@ const ( var ClocksPerSec = float64(128) func init() { - out, err := exec.Command("/usr/bin/getconf", "CLK_TCK").Output() + getconf, err := exec.LookPath("/usr/bin/getconf") + if err != nil { + return + } + out, err := exec.Command(getconf, "CLK_TCK").Output() // ignore errors if err == nil { i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) diff --git a/cpu/cpu_linux.go b/cpu/cpu_linux.go index baeb742..c561f66 100644 --- a/cpu/cpu_linux.go +++ b/cpu/cpu_linux.go @@ -15,7 +15,11 @@ import ( var cpu_tick = float64(100) func init() { - out, err := exec.Command("/usr/bin/getconf", "CLK_TCK").Output() + getconf, err := exec.LookPath("/usr/bin/getconf") + if err != nil { + return + } + out, err := exec.Command(getcon, "CLK_TCK").Output() // ignore errors if err == nil { i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64) diff --git a/disk/disk_linux.go b/disk/disk_linux.go index 6d976e4..91e25a1 100644 --- a/disk/disk_linux.go +++ b/disk/disk_linux.go @@ -298,7 +298,12 @@ func IOCounters() (map[string]IOCountersStat, error) { func GetDiskSerialNumber(name string) string { n := fmt.Sprintf("--name=%s", name) - out, err := exec.Command("/sbin/udevadm", "info", "--query=property", n).Output() + udevadm, err := exec.LookPath("/sbin/udevadm") + if err != nil { + return "" + } + + out, err := exec.Command(udevadm, "info", "--query=property", n).Output() // does not return error, just an empty string if err != nil { diff --git a/host/host_darwin.go b/host/host_darwin.go index 9a448d2..f4a8c36 100644 --- a/host/host_darwin.go +++ b/host/host_darwin.go @@ -127,12 +127,16 @@ func PlatformInformation() (string, string, string, error) { family := "" version := "" - out, err := exec.Command("uname", "-s").Output() + uname, err := exec.LookPath("uname") + if err != nil { + return "", "", "", err + } + out, err := exec.Command(uname, "-s").Output() if err == nil { platform = strings.ToLower(strings.TrimSpace(string(out))) } - out, err = exec.Command("uname", "-r").Output() + out, err = exec.Command(uname, "-r").Output() if err == nil { version = strings.ToLower(strings.TrimSpace(string(out))) } diff --git a/host/host_freebsd.go b/host/host_freebsd.go index 2f62508..06142e1 100644 --- a/host/host_freebsd.go +++ b/host/host_freebsd.go @@ -133,13 +133,17 @@ func PlatformInformation() (string, string, string, error) { platform := "" family := "" version := "" + uname, err := exec.LookPath("uname") + if err != nil { + return "", "", "", err + } - out, err := exec.Command("uname", "-s").Output() + out, err := exec.Command(uname, "-s").Output() if err == nil { platform = strings.ToLower(strings.TrimSpace(string(out))) } - out, err = exec.Command("uname", "-r").Output() + out, err = exec.Command(uname, "-r").Output() if err == nil { version = strings.ToLower(strings.TrimSpace(string(out))) } diff --git a/host/host_linux.go b/host/host_linux.go index 4794165..3ae232a 100644 --- a/host/host_linux.go +++ b/host/host_linux.go @@ -163,7 +163,11 @@ func getLSB() (*LSB, error) { } } } else if common.PathExists("/usr/bin/lsb_release") { - out, err := exec.Command("/usr/bin/lsb_release").Output() + lsb_release, err := exec.LookPath("/usr/bin/lsb_release") + if err != nil { + return ret, error + } + out, err := exec.Command(lsb_release).Output() if err != nil { return ret, err } diff --git a/internal/common/common_darwin.go b/internal/common/common_darwin.go index 2c15b78..2b795d8 100644 --- a/internal/common/common_darwin.go +++ b/internal/common/common_darwin.go @@ -15,7 +15,12 @@ func DoSysctrl(mib string) ([]string, error) { if err != nil { return []string{}, err } - out, err := exec.Command("/usr/sbin/sysctl", "-n", mib).Output() + + sysctl, err := exec.LookPath("/usr/bin/getconf") + if err != nil { + return + } + out, err := exec.Command(sysctl, "-n", mib).Output() if err != nil { return []string{}, err } diff --git a/internal/common/common_freebsd.go b/internal/common/common_freebsd.go index ef9ca56..6408a97 100644 --- a/internal/common/common_freebsd.go +++ b/internal/common/common_freebsd.go @@ -15,7 +15,11 @@ func DoSysctrl(mib string) ([]string, error) { if err != nil { return []string{}, err } - out, err := exec.Command("/sbin/sysctl", "-n", mib).Output() + sysctl, err := exec.LookPath("/sbin/sysctl") + if err != nil { + return + } + out, err := exec.Command(sysctl, "-n", mib).Output() if err != nil { return []string{}, err } diff --git a/mem/mem_darwin.go b/mem/mem_darwin.go index 922b05c..acf9a5f 100644 --- a/mem/mem_darwin.go +++ b/mem/mem_darwin.go @@ -4,6 +4,7 @@ package mem import ( "encoding/binary" + "fmt" "strconv" "strings" "syscall" @@ -35,6 +36,8 @@ func SwapMemory() (*SwapMemoryStat, error) { return ret, err } + fmt.Println(swapUsage) + total := strings.Replace(swapUsage[2], "M", "", 1) used := strings.Replace(swapUsage[5], "M", "", 1) free := strings.Replace(swapUsage[8], "M", "", 1) diff --git a/mem/mem_darwin_nocgo.go b/mem/mem_darwin_nocgo.go index f3b085e..2008ce5 100644 --- a/mem/mem_darwin_nocgo.go +++ b/mem/mem_darwin_nocgo.go @@ -12,7 +12,11 @@ import ( // Runs vm_stat and returns Free and inactive pages func getVMStat(vms *VirtualMemoryStat) error { - out, err := exec.Command("vm_stat").Output() + vm_stat, err := exec.LookPath("vm_stat") + if err != nil { + return + } + out, err := exec.Command(vm_stat).Output() if err != nil { return err } diff --git a/process/process_posix.go b/process/process_posix.go index 38f06e9..20db9e4 100644 --- a/process/process_posix.go +++ b/process/process_posix.go @@ -64,7 +64,11 @@ func (p *Process) SendSignal(sig syscall.Signal) error { sigAsStr = "KILL" } - cmd := exec.Command("kill", "-s", sigAsStr, strconv.Itoa(int(p.Pid))) + kill, err := exec.LookPath("kill") + if err != nil { + return + } + cmd := exec.Command(kill, "-s", sigAsStr, strconv.Itoa(int(p.Pid))) cmd.Stderr = os.Stderr err := cmd.Run() if err != nil {