登录
首页 >  Golang >  Go问答

控制台界面

来源:stackoverflow

时间:2024-03-26 22:39:34 100浏览 收藏

在 Windows 系统上运行 Go 中的 `nmap` 扫描时,使用 `exec.Command()` 执行命令后出现恐慌。由于 `exec.Command()` 不会返回错误,而是返回一个 `*Cmd` 类型结构,因此需要在该结构上调用 `Run()` 方法以执行命令。此外,使用 `panic()` 不是一个好习惯,应改用 `log.Fatal()`。

问题内容

我只是尝试使用具有以下主要功能的 go 在我的系统上运行 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() 读取其他命令输出的示例,具体取决于您要执行的操作以及命令的行为方式。

今天关于《控制台界面》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>