交互批量拖取文件代码片段,非完整代码
发布时间:2020-12-16 18:32:31 所属栏目:大数据 来源:网络整理
导读:package mainimport ("bytes""encoding/json""flag""fmt""io/ioutil""net/http""os""strings")const (bodyType = "application/json")type job struct {FullDir boolFiles stringDate intReg stringIPlist stringPort stringHost string}var (cfg stringj jo
package main import ( "bytes" "encoding/json" "flag" "fmt" "io/ioutil" "net/http" "os" "strings" ) const ( bodyType = "application/json" ) type job struct { FullDir bool Files string Date int Reg string IPlist string Port string Host string } var ( cfg string j job SJ SourceJob ) func init() { flag.StringVar(&cfg,"c","","-c cfg.json") flag.BoolVar(&j.FullDir,"d",false,"-d true") flag.StringVar(&j.Files,"f","-f 1,D:/test/2,test/3") flag.IntVar(&j.Date,"t","-t -1 or -t 1") flag.StringVar(&j.Reg,"r","-r *.go") flag.StringVar(&j.IPlist,"i","-i 172.18.80.2:1789,127.0.0.1:1789") flag.StringVar(&j.Port,"p","-p 1789") flag.StringVar(&j.Host,"h","-h 192.168.1.2:1789") flag.Parse() if len(cfg) > 0 { readConfig(cfg,&j) } if len(j.Files) <= 0 || len(j.IPlist) <= 0 || len(j.Host) <= 0 { fmt.Printf("%s -f -h or -i is nulln",os.Args[0]) os.Exit(1) } if j.FullDir { if j.Date != 0 || len(j.Reg) != 0 { SJ.Job.Tag = 4 } else { SJ.Job.Tag = 2 } } else { if j.Date != 0 || len(j.Reg) != 0 { SJ.Job.Tag = 3 } else { SJ.Job.Tag = 1 } } SJ.Job.Date = j.Date SJ.Job.Regexp = j.Reg SJ.Job.Files = strings.Split(j.Files,",") SJ.IPlist = resolveIP(j.IPlist,j.Port) } func main() { buf,err := json.Marshal(SJ) if err != nil { fmt.Printf("Marshal msg faild,%vn",err) return } rio := bytes.NewReader(buf) resp,err := http.Post(fmt.Sprintf("http://%v/index",j.Host),bodyType,rio) if err != nil { fmt.Printf("Request faild,err) return } defer resp.Body.Close() if resp.StatusCode != 200 { fmt.Println(resp.StatusCode) return } buf,err = ioutil.ReadAll(resp.Body) if err != nil { fmt.Printf("Read resp msg faild,err) return } m := make(map[string]Exec) err = json.Unmarshal(buf,&m) if err != nil { fmt.Printf("Unmarshal resp msg faild,err) return } if len(m) > 0 { for k,v := range m { fmt.Printf("agent:%vtFind AllFiles Size:%vn",k,v.Size) fmt.Printf("Find Files:%vn",v.Files) fmt.Printf("Find AbsFiles%vn",v.AbsFiles) } } else { fmt.Println("Can't found valied file.") return } var enter string for { fmt.Print("Input 'Y' continue or 'N' exit:") fmt.Scan(&enter) switch { case strings.Contains("Y,y",enter): rio = bytes.NewReader(buf) resp,err = http.Post(fmt.Sprintf("http://%v/run",rio) if err != nil { fmt.Println("Commit compress faild,err) return } if resp.StatusCode != 200 { fmt.Println("Resp stausCode:%vn",resp.StatusCode) } return case strings.Contains("N,n",enter): return default: continue } } } func resolveIP(ip,port string) []string { iplist := strings.Split(ip,") if len(port) <= 0 { return iplist } for index,value := range iplist { if strings.Contains(value,":") { continue } iplist[index] = value + ":" + port } return iplist } func readConfig(cfgPath string,cfg *job) { buf,err := ioutil.ReadFile(cfgPath) if err != nil { fmt.Printf("Read config file faild,err) os.Exit(1) } err = json.Unmarshal(buf,cfg) if err != nil { fmt.Printf("Unmarshal config file faild,%sn",err) os.Exit(1) } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |