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
の値に "internal"が含まれていて、選択されたファイルを開き、ポートを反復することを望みます。 LookupAddr
から返されたアドレスは常にbox.internal.blah.blah.comにあるので、私は正規表現と比較されるアドレス(この場合は内部)の2番目のフィールドを探しています。そのアドレスはループを循環します。正規表現の値と文字列の比較
私の正規表現は、おそらくここで何が間違っているのでしょうか。どんな助けでも大歓迎です。