2016-08-23 208 views
8

目前,如果我想在虛擬機上運行的東西,我複製文件過這樣的:gcloud計算執行遠程命令

gcloud compute --project <project_id> copy-files --zone <zone_name> /home/roman/source/dir [email protected]<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等第三方軟件包。

+0

我不認爲這是可能的。您可以添加一些元數據到項目中並讓它在實例重啓時自動運行。 – Sridhar

回答

14

嘗試:

$ 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 
2

它有一點切線;使用正常的SSH客戶端而不是gcloud compute

ssh -i ~/.ssh/google_compute_engine [email protected]<vm_IP> 'python /some/path/example.py' 

的gcloud ssh密鑰位於~/.ssh/google_compute_engine,它使用。它還需要實例的外部IP地址而不是其名稱。

+0

是的,'gcloud compute ssh'只是一個包裝。 – Dagang

8

降落在一週前路過阻止SSH命令後gcloud更新 ' - ',有效地強制使用--command選擇這個。在這種情況下使用:

gcloud compute ssh --zone ZONE INSTANCE --command 'cd /tmp && python some.py'