package main import ( "fmt" "github.com/robfig/cron" "io/ioutil" "log" "net/http" "os/exec" "time" ) func TimeTask() { c := cron.New() cronstr := "@every " + fmt.Sprint(config.TaskTime) + "m" _ = c.AddFunc(cronstr, func() { log.Println("每3分钟执行一次") StartTask() }) c.Start() } func StartTask() { time.AfterFunc(time.Second * time.Duration(config.AdvanceTime), DestroyRes) registe() } func DestroyRes() { log.Println("提前销毁资源") destory() } //公网IP func getMyIp() string { resp, err := http.Get("http://myexternalip.com/raw") if err != nil { return "" } defer resp.Body.Close() bs, _ := ioutil.ReadAll(resp.Body) ip := myipreg.FindString(string(bs)) return ip } //切换ip, 保证与旧IP不重复 func changeIP() { for i := 0; i < 10; i++ { exec.Command("rasdial", config.Name, "/disconnect").Run() exec.Command("rasdial", config.Name, config.User, config.Pwd).Run() ////清空 //for k, _ := range cache { // delete(cache, k) //} newip := getMyIp() if newip == "" { log.Println("取不到公网IP,可能拨号失败了") time.Sleep(1 * time.Minute) } else if myoldip != newip { log.Printf("你的公网IP从%s换成%s \n", myoldip, newip) myoldip = newip break } else { log.Println("取到的IP重复了") } } }