github.com/Ullaakut/nmap
(缺少导入“github.com/Ullaakut/nmap”的元数据)
我尝试导入
github.com/Ullaakut/nmap
:
package main
import (
"context"
"fmt"
"log"
"github.com/Ullaakut/nmap"
)
func main() {
// Equivalent to
// nmap -sV -T4 192.168.0.0/24 with a filter to remove non-RTSP ports.
scanner, err := nmap.NewScanner(
context.Background(),
nmap.WithTargets("192.168.0.0/24"),
nmap.WithPorts("80", "554", "8554"),
nmap.WithServiceInfo(),
nmap.WithTimingTemplate(nmap.TimingAggressive),
// Filter out ports that are not RTSP
nmap.WithFilterPort(func(p nmap.Port) bool {
return p.Service.Name == "rtsp"
}),
// Filter out hosts that don't have any open ports
nmap.WithFilterHost(func(h nmap.Host) bool {
// Filter out hosts with no open ports.
for idx := range h.Ports {
if h.Ports[idx].Status() == "open" {
return true
}
}
return false
}),
)
if err != nil {
log.Fatalf("unable to create nmap scanner: %v", err)
}
result, warnings, err := scanner.Run()
if len(*warnings) > 0 {
log.Printf("run finished with warnings: %s\n", *warnings) // Warnings are non-critical errors from nmap.
}
if err != nil {
log.Fatalf("nmap scan failed: %v", err)
}
for _, host := range result.Hosts {
fmt.Printf("Host %s\n", host.Addresses[0])
for _, port := range host.Ports {
fmt.Printf("\tPort %d open with RTSP service\n", port.ID)
}
}
}
我尝试
go mod init github.com/Ullaakut/nmap
;出现了一个go.mod
文件
module github.com/Ullaakut/nmap
go 1.22.4
之后出现错误:
import cycle not allowed
go install github.com/Ullaakut/nmap/v3@latest
package github.com/Ullaakut/nmap/v3 is not a main package
然后我尝试:
go install github.com/Ullaakut/nmap@latest package github.com/Ullaakut/nmap is not a main package
那我试试
go get github.com/Ullaakut/nmap/v3@latest
go: added github.com/Ullaakut/nmap/v3 v3.0.3
go: added golang.org/x/sync v0.1.0
一个
go.sum
文件出现,我的 go.mod
文件发生了变化:
module github.com/Ullaakut/nmap
go 1.22.4
require (
github.com/Ullaakut/nmap/v3 v3.0.3 // indirect
golang.org/x/sync v0.1.0 // indirect
)
然后我写
go mod tidy
;我的 go.mod
文件现在是:
module github.com/Ullaakut/nmap
go 1.22.4
但还是
could not import github.com/Ullaakut/nmap (missing metadata for import of "github.com/Ullaakut/nmap")
import cycle not allowed
如何导入?
我尝试 go mod init github.com/Ullaakut/nmap;出现了 go.mod 文件
这将是您问题的一部分,模块路径(例如
go mod init [module-path]
)应该标识您的模块,而不是您尝试导入的内容的路径。 文档说:
模块路径:标识模块的路径,充当模块内包导入路径的前缀。例如,“golang.org/x/net”。
接下来要注意的是你的导入; docs 建议
import github.com/Ullaakut/nmap/v3
。 v3
表示该库的先前版本与当前版本不兼容(因此最好使用当前版本)。因此,为了解决您的问题,我建议更改您的代码以使用 import "github.com/Ullaakut/nmap/v3"
。进行此更改后,您可以通过运行解决其他问题:
go mod edit -module myModule
go mod tidy
这会将您的模块名称更改为
myModule
,理想情况下,模块路径应该是存储代码的存储库的路径(例如github.com/my/repo
),但现在使用myModule
就可以了(请参阅文档)和这个答案了解更多信息。通过这些更改,您的代码可以在我的机器上编译。
注意:我很少使用
go install
或go get
。将 import
添加到相关 .go
文件,然后运行 go mod tidy
通常就足够了(go mod tidy
自动检索任何需要的包)。