12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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重复了")
- }
- }
- }
|