es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

GCloud ssh no puede conectarse cuando se le llama.

Tengo código de prueba en Go, que configura un estado en una instancia de Compute Engine (y no quiero exponer los puertos).
Dado que no parece haber una manera fácil de hacer esto directamente en Golang, utilizo gcloud:

func TestMe(t *testing.T) {
  cmd := exec.Command("gcloud", "compute", "ssh", "--project", "foo", "--tunnel-through-iap", "--zone", "europe-west1-z", "bar", `--ssh-flag="-T"`, "--", "echo WOW")
  cmd.Env = os.Environ()
  out, err := cmd.CombinedOutput()
  println(string(out))
  t.Fatal(err)
}

Cuando ejecuto go test, cmd muestra:

bash: myuser@compute.123456789: comando no encontrado

La instancia de cómputo es correcta, pero algo falla al intentar acceder a la instancia de cómputo. El mismo comando gcloud funciona en bash (incluso para no interactivos). Supongo que hay algo diferente en el entorno de Golang.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con el entorno en el que se ejecuta el comando gcloud al llamarlo desde Go, ya que el mismo comando funciona en bash. Intenta agregar la variable de entorno PATH al comando antes de ejecutarlo, de esta manera:

    func TestMe(t *testing.T) {
      cmd := exec.Command("gcloud", "compute", "ssh", "--project", "foo", "--tunnel-through-iap", "--zone", "europe-west1-z", "bar", "--ssh-flag=-T", "--", "echo WOW")
      cmd.Env = append(os.Environ(), "PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin")
      out, err := cmd.CombinedOutput()
      println(string(out))
      t.Fatal(err)
    }
    

    Esto asegurará que el comando gcloud se esté ejecutando con las variables de entorno correctas.

Comments are closed.