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에 있으므로이 주소의 두 번째 필드 (이 경우 내부)를 찾고 정규식과 비교하고 "내부"를 찾으면 루프를 통해 순환 할 주소문자열에 대한 정규식 값
내 정규 표현식이 가장 잘못된 것 같습니다. 어떤 도움이라도 대단히 감사하겠습니다.