登录
首页 >  Golang >  Go问答

将 os/exec 输出传递给 gin get的实现方法

来源:stackoverflow

时间:2024-03-07 12:54:25 420浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《将 os/exec 输出传递给 gin get的实现方法》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我想将操作系统命令的退出代码传递给 url。我正在使用杜松子酒,但我愿意接受任何方式。

我只想将错误传递给 http 响应。

到目前为止,我还找不到将操作系统输出放入 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 中测试此解决方案,也不能保证它适用于您的情况。

终于介绍完啦!小伙伴们,这篇关于《将 os/exec 输出传递给 gin get的实现方法》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>