Windows 命令行窗口

Windows 命令行窗口,windows,go,cmd,nmap,Windows,Go,Cmd,Nmap,我只是想在我的系统上运行一个nmap扫描,使用下面的Go with main函数 func main() { execErr := exec.Command("cmd","/c","nmap -T4 -A -v localhost") if execErr != nil { panic(execErr) } } 这是恐慌。我试图在线搜索文档,但还没有找到任何对windows有用的东西。有人可以帮助或指向某些资源吗?不会返回错误,而

我只是想在我的系统上运行一个nmap扫描,使用下面的Go with main函数

func main() {

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

}
这是恐慌。我试图在线搜索文档,但还没有找到任何对windows有用的东西。有人可以帮助或指向某些资源吗?

不会返回
错误,而是键入struct,然后您可以在该struct上调用方法(或其他方法,请参见下面的注释)以执行如下命令:

cmd:=exec.Command(“cmd”、“/c”、“nmap-T4-A-v localhost”)
err:=cmd.Run()
如果执行错误!=零{
log.Fatal(错误)
}
您的代码
panic
s因为
exec.Command(“cmd”、“/c”、“nmap-T4-A-v localhost”)
返回指向
cmd
结构的有效非零指针(紧急消息可能是指向
cmd.exe
的完整路径,然后是您提供的参数,这些参数是
cmd
结构的
path
Args


注意:在这里使用
log.Fatal()不是很好的做法
取而代之。另外,直接运行
nmap
并在代码中处理其输出可能更好。请参阅使用和读取其他命令输出的示例,具体取决于您尝试执行的操作以及命令的行为。

感谢您的回复。我正在尝试使用golang构建一个nmap扫描仪,从HTML中获取用户输入在文本框中形成表单并运行该主机的nmap扫描/IP
cmd,err:=exec.Command(
C:\ProgramFiles(x86)\nmap\nmap.exe
,“nmap-T4-a-v localhost”).Output()如果err!=nil{log.Fatal(err)}fmt.Printf(“输出为%s\n,cmd”)
此代码给出以下输出
输出正在启动nmap 7.91( https://nmap.org )在2021-01-17 22:21东部标准时间
开始,但并不等待完成。我尝试使用
run()
作为替代方法,但这根本不会给出任何输出。我相信您的命令行中有两次nmap,因此nmap无法解析参数,并且无法在stderr上输出错误,因为
输出()
只捕获进程的标准输出(但不捕获错误)。您的调用应该是
exec.Command(“path\to\nmap.exe”,“-T4-A…”)。我对
nmap`一点都不熟悉,但如果它是某种交互进程,您可能必须使用
Cmd.std*Pipe()将其附加到
std*
管道
功能。请参阅我在回复中链接的文档,它们都在那里。