ssh - servidor - gcloud compute ejecutar comando de forma remota
openssh windows 7 (3)
Actualmente, si quiero ejecutar algo en una VM, copio archivos de esta manera:
gcloud compute --project <project_id> copy-files --zone <zone_name> /home/roman/source/dir roman@<vm_name>:/some/path
Entonces necesito SSH en esto manualmente así:
gcloud compute --project <project_id> ssh --zone <zone_name> <vm_name>
Y luego ve y ejecuta un comando:
cd /some/path
python example.py
¿Cómo combino los pasos 2 y 3 juntos y ejecuto un comando de forma remota?
Nota: Quiero usar gcloud o la api de python. No quiero usar paquetes de terceros como Fabric.
Lo hizo con un poco de tangente; utilizando el cliente ssh normal en lugar de gcloud compute
:
ssh -i ~/.ssh/google_compute_engine roman@<vm_IP> ''python /some/path/example.py''
La clave gcloud ssh se encuentra en ~/.ssh/google_compute_engine
, que usa. También requiere la dirección IP externa de la instancia en lugar de su nombre.
Tratar:
$ gcloud compute ssh --zone ZONE INSTANCE -- ''cd /tmp && python some.py''
Desde gcloud compute ssh --help
:
[-- IMPLEMENTATION-ARGS ...]
Flags and positionals passed to the underlying ssh implementation.
The ''--'' argument must be specified between gcloud specific args on the
left and IMPLEMENTATION-ARGS on the right. Example:
$ gcloud compute ssh example-instance --zone us-central1-a -- -vvv /
-L 80:%INSTANCE%:80
Una actualización de gcloud que aterrizó hace una semana bloqueó el paso de los comandos ssh después de ''-'' y efectivamente --command
uso de la opción --command
para esto. En este caso use:
gcloud compute ssh --zone ZONE INSTANCE --command ''cd /tmp && python some.py''
.