go环境的statik安装使用
安装步骤
statik用于将静态文件目录嵌入到Go二进制文件中
下载源码statik包
http://github.com/rakyll/statik
go intall 安装statik命令
编译源静态文件
1. 把安装好的包 里面的 statik.go 文件编译好 然后运行
2.编译好的statik.go文件 -src= 你的静态文件路径
3.静态文件编译完成 会生成 statik文件夹和statik.go文件
4.然后再在你的 main.go文件里面使用
5. statik -f -src=public
导入第三方项目
package main import ( "fmt" "io/ioutil" "regexp" _ "strconv" _ "strings" _ "sync" _ "time" _ "yxh/scan/finger/statik" //必须先导入生成的statik,再导入fs "github.com/rakyll/statik/fs" ) func (N *NmapProbe)Init(){ statikFS, err := fs.New() if err != nil { fmt.Println("[-] 静态资源FS初始化失败:%s", err.Error()) } resources, err := statikFS.Open("/nmap.txt") if err != nil{ fmt.Println("[-] 加载Nmap协议失败:%s", err.Error()) } defer resources.Close() nmapContents, err := ioutil.ReadAll(resources) if err != nil{ fmt.Println("[-] 加载Nmap协议失败:%s", err.Error()) } resources1, err := statikFS.Open("/port.txt") if err != nil{ fmt.Println("[-] 加载端口数据失败:%s\n", err.Error()) } defer resources1.Close() // nmapContentsPort, err := ioutil.ReadAll(resources1) // if err != nil{ // fmt.Println("[-] 加载端口数据失败:%s\n", err.Error()) // } strdata := string(nmapContents) fmt.Println(strdata) }
集成到项目实例
statik使用方法 1.下载http://github.com/rakyll/statik到本地 2.go install 会在GOPATH/bin下生成statik.exe 3.把statik.exe 拷贝到/myscan/cmd目录下 1.cd /myscan/cmd/file 修改nmap.txt 修改port.txt 2.cd /myscan/cmd statik.exe -f -src=file statik -f -src=file 3.生成main.exe cd /myscan/cmd go build main.go 4.开启扫描任务 cd /myscan/cmd ./main.exe -i 192.168.30.129 -p 1-65535 -m port -li 0 -n 1000 -ng
statik缓存文件内容
package main import( _ "buildtest/statik" "github.com/rakyll/statik/fs" "fmt" "io/ioutil" _ "time" "os" "strings" ) func main(){ ReadStatikFs() //ReadFile() } func ReadStatikFs() { //修改文件内容不会生效,程序依然读取的是旧的文件内容 //必须重新编译执行go build main.go statikFS, err := fs.New() resources, err := statikFS.Open("/1.txt") if err != nil{ fmt.Println("[-] 加载txt失败:%s", err.Error()) } defer resources.Close() txtContents, err := ioutil.ReadAll(resources) if err != nil{ fmt.Println("[-] 加载txt失败:%s", err.Error()) } fmt.Println(string(txtContents)) } func ReadFile() { //修改文件内容直接生效,程序直接读取磁盘最新文件内容 apath, _:=os.Getwd() var fingerfile string if strings.Index(apath,"\\") > 0{ //windows fingerfile = apath+"\\file\\1.txt" } else { //linux os fingerfile = apath+"/file/1.txt" } fmt.Println(fingerfile) filecon, _ := os.Open(fingerfile) nmapContents, _ := ioutil.ReadAll(filecon) fmt.Println(string(nmapContents)) defer filecon.Close() }
本文来自博客园,作者:不懂123,转载请注明原文链接:https://www.cnblogs.com/yxh168/p/16795742.html