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)

}
View Code

 

集成到项目实例

       

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
View Code

 

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()
}
View Code

 

posted @ 2022-10-16 10:32  不懂123  阅读(499)  评论(0编辑  收藏  举报