首页 > 解决方案 > 命令行窗口

问题描述

我只是想在我的系统上使用以下主要功能的 Go 运行 nmap 扫描

func main() {

execErr := exec.Command("cmd","/c","nmap -T4 -A -v localhost")
if execErr != nil {
panic(execErr)
}

}

它的恐慌。我试图在线搜索文档,但找不到任何对 Windows 有帮助的东西。有人可以帮助或指出一些资源吗?

标签: windowsgocmdnmap

解决方案


exec.Command()不返回error*Cmd类型结构,然后您可以在其上调用方法Run()(或其他方法,请参见下面的注释)来执行命令,如下所示:

cmd := exec.Command("cmd","/c","nmap -T4 -A -v localhost")
err := cmd.Run()
if execErr != nil {
    log.Fatal(err)
}

您的代码panics 因为exec.Command("cmd","/c","nmap -T4 -A -v localhost")返回一个指向 struct 的有效非零指针(恐慌消息可能是您提供的然后参数Cmd的完整路径,这些参数是字段和结构的值......)。cmd.exePathArgsCmd

panic()注意:此处不是好习惯,请log.Fatal()改用。nmap此外,直接运行并在代码中处理其输出可能会更好。请参阅使用 读取其他命令输出的示例Output(),具体取决于您要执行的操作以及命令的行为方式CombinedOutput()Start()


推荐阅读