2016-08-23 3 views
8

現在のコマンドを実行します。のgcloud計算は、私はVM上で何かを実行したい場合は、私はこのようなファイルをコピー、リモートで

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> 

そして行くと、いくつかのコマンドを実行します。私は、ステップ2と3、互いに結合し、リモートコマンドを実行するにはどうすればよい

cd /some/path 
python example.py 

を?

注: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

少しの接線でそれを行いました。 gcloud computeするのではなく、通常のsshクライアントを使用して:

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'を使用してください。

関連する問題