gcloud compute 远程执行命令
gcloud compute execute command remotely
目前,如果我想在 VM 上执行某些操作,我会像这样复制文件:
gcloud compute --project <project_id> copy-files --zone <zone_name> /home/roman/source/dir roman@<vm_name>:/some/path
然后我需要像这样手动 SSH 到它:
gcloud compute --project <project_id> ssh --zone <zone_name> <vm_name>
然后去 运行 一些命令:
cd /some/path
python example.py
如何结合第 2 步和第 3 步并远程执行命令?
注意:我想使用 gcloud 或 python api。我不想使用像 Fabric 这样的第三方包。
做的有点切线;使用普通的 ssh 客户端而不是 gcloud compute
:
ssh -i ~/.ssh/google_compute_engine roman@<vm_IP> 'python /some/path/example.py'
gcloud ssh 密钥位于 ~/.ssh/google_compute_engine
,它使用该密钥。它还需要实例的外部 IP 地址而不是其名称。
尝试:
$ gcloud compute ssh --zone ZONE INSTANCE -- 'cd /tmp && python some.py'
来自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
一周前登陆的 gcloud 更新阻止了在“--”之后传递 ssh 命令,并有效地强制为此使用 --command
选项。在这种情况下使用:
gcloud compute ssh --zone ZONE INSTANCE --command 'cd /tmp && python some.py'
.
目前,如果我想在 VM 上执行某些操作,我会像这样复制文件:
gcloud compute --project <project_id> copy-files --zone <zone_name> /home/roman/source/dir roman@<vm_name>:/some/path
然后我需要像这样手动 SSH 到它:
gcloud compute --project <project_id> ssh --zone <zone_name> <vm_name>
然后去 运行 一些命令:
cd /some/path
python example.py
如何结合第 2 步和第 3 步并远程执行命令?
注意:我想使用 gcloud 或 python api。我不想使用像 Fabric 这样的第三方包。
做的有点切线;使用普通的 ssh 客户端而不是 gcloud compute
:
ssh -i ~/.ssh/google_compute_engine roman@<vm_IP> 'python /some/path/example.py'
gcloud ssh 密钥位于 ~/.ssh/google_compute_engine
,它使用该密钥。它还需要实例的外部 IP 地址而不是其名称。
尝试:
$ gcloud compute ssh --zone ZONE INSTANCE -- 'cd /tmp && python some.py'
来自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
一周前登陆的 gcloud 更新阻止了在“--”之后传递 ssh 命令,并有效地强制为此使用 --command
选项。在这种情况下使用:
gcloud compute ssh --zone ZONE INSTANCE --command 'cd /tmp && python some.py'
.