我想将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中测试此解决方案,也不能保证它会在您的情况下工作。