exec包
在 Go 语言中调用 Python 脚本可以使用 os/exec
包中的函数。先用 exec.Command
函数来创建一个 *exec.Cmd
结构体,然后调用这个结构体的 Run
方法来执行 Python 脚本。
具体实例:
代码语言:javascript复制import (
"bytes"
"io"
"io/ioutil"
"os"
"os/exec"
)
func ExecShellReturn(s string) (string, error) {
//函数返回一个*Cmd,用于使用给出的参数执行name指定的程序
cmd := exec.Command("/bin/bash", "-c", s)
//读取io.Writer类型的cmd.Stdout,再通过bytes.Buffer(缓冲byte类型的缓冲器)
//将byte类型转化为string类型(out.String():这是bytes类型提供的接口)
var out bytes.Buffer
cmd.Stdout = &out
//Run执行c包含的命令,并阻塞直到完成。 这里stdout被取出,
//cmd.Wait()无法正确获取stdin,stdout,stderr,则阻塞在那了
err := cmd.Run()
return out.String(), err
}
如何调用:
代码语言:javascript复制shell = "python3 canary.py"
log.Info("执行的shell语句: ", shell)
result, _ := utils.ExecShellReturn(shell)