dpl74687 2019-08-30 17:33
浏览 247
已采纳

Nginx版本命令不返回版本也不错误

I'm trying to check which version of Nginx is installed on my computer using Go.

This is my snippet:

package main

import (
    "bytes"
    "errors"
    "fmt"
    "os/exec"
)

func runCommand(command string, arg ...string) (string, error) {
    cmd := exec.Command(command, arg...)
    cmdOutput := &bytes.Buffer{}
    errOutput := &bytes.Buffer{}
    cmd.Stdout = cmdOutput
    cmd.Stderr = errOutput
    err := cmd.Run()
    if err != nil {
        return "", errors.New(string(errOutput.Bytes()))
    }
    fmt.Println("Command succeeded")
    return string(cmdOutput.Bytes()), nil
}

func getVersion(command string, arg ...string) {
    path, err := exec.LookPath(command)
    if err != nil {
        fmt.Println("No path for " + command + " found")
        return
    }
    fmt.Println("Path for " + command + " is " + path)

    result, err := runCommand(path, arg...)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(command + " version is: " + result)
}

func main() {
    getVersion("go", "version") // works
    getVersion("nginx", "-v") // does not work
    getVersion("firefox", "-v") // works
}

For Go and Firefox it works perfectly fine, however for Nginx it returns neither a version nor an error. It seems to return an empty string...

Looking at the permissions: Firefox file is a symlink to a sh file owned by root:root with permissions 755. Nginx file is owned by root:root with permissions 755 as well.

Of course, running the command nginx -v works.

  • 写回答

1条回答 默认 最新

  • duanqin2026 2019-08-30 17:38
    关注

    You're expecting the output from stdout. It is printing to stderr. Try cmd.CombinedOutput()

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?