从已执行的命令中编译代码
我正在开发一个黑客系统,涉及把黑客脚本编译成要注入到一个CTF服务器中的代码。我的目标是通过在Go代码中执行 go build 来编译每个脚本,因为CTF服务器不支持Go。我的做法未必是最佳的,也许Stack Overflow的网友有不同的解决方案,我很乐意看看。
尽管我的代码是手动编译的,但我找不出为什么它不能通过从命令行运行 go build 来实现。当我记录 command.Run() 返回的错误值时,我只得到 nil
这是我的代码:
func ForgeHacker(level int) {
log.Println("[*] Forging hacker")
cw, err := os.Getwd()
Panic(err) // Custom error handler
dir, _ := filepath.Split(cw)
l := fmt.Sprint("hacker_", level)
log.Println("New cw", cw) // Logging to be sure I'm changing command.Dir properly
c := exec.Command("go", "build", "hacker.go")
c.Dir = filepath.Join(dir, l)
log.Println("Command directory", c.Dir) // Logs correctly where hacker.go script is
err = c.Run()
log.Fatalln("Hacker build failed: ", c.Stderr) // Logs nil, I'm clueless here
Panic(err)
}
有人能帮我理解我在这里做错了什么或缺少什么吗?
解决方案
@MindSwipe指出了我的问题。我必须用 cmd.CombinedOutput() 来记录我的命令输出。虽然这并不是解决为什么不能从外部命令构建的根本原因,但对于了解正在发生的情况确实很有帮助。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。