diff --git a/builder/vmware/iso/driver_esx5.go b/builder/vmware/iso/driver_esx5.go index 6f35f5272..e80a313b3 100644 --- a/builder/vmware/iso/driver_esx5.go +++ b/builder/vmware/iso/driver_esx5.go @@ -151,6 +151,8 @@ func (d *ESX5Driver) VNCAddress(portMin, portMax uint) (string, uint, error) { var vncPort uint //Process ports ESXi is listening on to determine which are available + //This process does best effort to detect ports that are unavailable, + //it will ignore any ports listened to by only localhost r, err := d.esxcli("network", "ip", "connection", "list") if err != nil { err = fmt.Errorf("Could not retrieve network information for ESXi: %v", err) @@ -161,10 +163,11 @@ func (d *ESX5Driver) VNCAddress(portMin, portMax uint) (string, uint, error) { for record, err := r.read(); record != nil && err == nil; record, err = r.read() { if record["State"] == "LISTEN" { splitAddress := strings.Split(record["LocalAddress"], ":") - log.Print(splitAddress) - port := splitAddress[len(splitAddress)-1] - log.Printf("ESXi Listening on: %s", port) - listenPorts[port] = true + if splitAddress[0] != "127.0.0.1" { + port := splitAddress[len(splitAddress)-1] + log.Printf("ESXi listening on address %s, port %s unavailable for VNC", record["LocalAddress"], port) + listenPorts[port] = true + } } }