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
的值中包含“internal”,则打开所选文件并遍历端口。从LookupAddr
返回的地址始终在box.internal.blah.blah.com中,所以我在寻找地址中的第二个字段(在本例中为内部)与正则表达式进行比较,如果找到地址中的“内部”将循环通过循环。
我知道我的正则表达式很可能是错误的。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用Regexp.MatchString方法执行您想要的操作。
if re.MatchString(addr[0]) {
// ...
}
https://play.golang.org/p/UvB16idiyf
文档中有很多示例,请查看它们:https://golang.org/pkg/regexp/#pkg-examples