命令行窗口



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

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

的恐慌。我试着在网上搜索文档,但找不到任何对windows有用的东西。有人能帮助我吗?

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")返回一个有效的非空指针到Cmd结构(恐慌消息可能是cmd.exe的完整路径,然后你提供的参数是Cmd结构的PathArgs字段的值…)。

注意:这里使用panic()不是一个好习惯,使用log.Fatal()代替。另外,直接运行nmap并在代码中处理其输出可能会更好。请参阅使用Output(),CombinedOutput()Start()读取其他命令输出的示例,这取决于您要做的事情以及命令的行为。

最新更新