2017-04-12 124 views
0
func main() { 

    var ip string 
    fmt.Print("Host: ") 
    fmt.Scanln(&ip) 

    addr, _ := net.LookupAddr(ip) 

    app := "grep" 
    arg0 := "inst" 
    arg1 := "acl.yaml" 

    cmd := exec.Command(app, arg0, arg1) 
    stdout, err := cmd.Output() 
    x := string(stdout) 

    reg, _ := regexp.Compile(`(internal)`) 
    if err != nil { 
     println(err.Error()) 
     return 
    } 
    if ip != "" { 
     validateIP(ip) 
    } 
    fmt.Println(x) 
    fmt.Println(addr[0]) 
    //fmt.Println(stdout) 
    if addr[0] == reg.FindString(`(internal)`){ 
     file, err := os.Open("ports.json") 
     if err != nil { 
      panic(err) 
     } 
     defer file.Close() 
     ports := []portDef{} 
     err = json.NewDecoder(file).Decode(&ports) 
     if err != nil { 
      panic(err) 
     } 

     for _, p := range ports { 
      conn, err := net.Dial(p.Protocol, ip + ":" + p.Port) 
      if conn != nil { 
       fmt.Println("") 
       fmt.Printf("Connection established between %s and Localhost.\n", addr) 
       fmt.Printf("Remote Address : %s \n", conn.RemoteAddr().String()) 
       fmt.Printf("Local Address : %s \n", conn.LocalAddr().String()) 
      } 
      fmt.Println("") 
      if err != nil { 
       fmt.Println(err) 
      } 
     } 
    } 
} 

我想比較正則表達式值與字符串。在這種情況下,我想的"addr"值進行比較,以正則表達式,如果中addr值中有「內部」,它通過開放的端口選定的文件和迭代。地址從LookupAddr返回始終處於box.internal.blah.blah.com,所以我在地址(在這種情況下,內部)尋找第二個字段進行比較的正則表達式,並在發現「內部」它將通過循環循環的地址。正則表達式值與字符串比較

我知道我的正則表達式很可能在這裏出了什麼問題。任何幫助將不勝感激。

回答