我想将OS命令的退出代码传递给URL。我正在使用杜松子酒,但我可以接受任何方式。

我只想将err传递给HTTP响应。

到目前为止,我还找不到用于将os输出放入HTTP响应示例中的示例,因此我来到这里是希望有人知道。

package main
import (
        "fmt"
        "github.com/gin-gonic/gin"
        "os/exec"
)
func Homepage(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "Hello World"
        }
}

func Powershell(c *gin.Context) {
    // Run this powershell program from Go.
    cmd := exec.Command("powershell","-file","C:\\temp\\test.ps1")
    // Wait for the Powershell program to exit.
    err := cmd.Run()
    //fmt.Println("Finished:", err)}


    c.JSON(200, gin.H{
      "Message": "This is the PowerShell exit code not the script exit code",
      "Finished:", err

}

func main() {
    fmt.Println("hello world")
    r := gin.Default()
    r.GET("/", Homepage)
    r.GET("/app", Powershell)
    r.Run()
}

到目前为止,我尝试过的所有操作在get / app上都只是错误

最佳答案

如果添加了适合您的命令的完整响应,则可以使用以下代码进行操作:

func Powershell(c *gin.Context) {
    cmd := exec.Command("powershell","-file","C:\\temp\\test.ps1")

    stdout, err := cmd.Output()
    if err != nil {
        c.JSON(200, gin.H{
            "Message": "Error occurs",
            "Finished": err,
        })
    } else {
        c.JSON(200, gin.H{
            "Message": string(stdout),
            "Finished": nil,
        })
    }
}

但是,如果您只想获取数字代码,则可以遵循this answer。我无法在Windows中测试此解决方案,也不能保证它会在您的情况下工作。

10-02 08:05