2016-08-23 8 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 या पायथन एपीआई का उपयोग करना चाहता हूँ। मैं फैब्रिक जैसे तीसरे पक्ष के पैकेज का उपयोग नहीं करना चाहता हूं।

+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 पर स्थित है जो इसे का उपयोग करता है। इसके नाम के बजाए इसके उदाहरण के बाहरी आईपी पते की भी आवश्यकता है।

+0

हां, 'gcloud compute ssh' सिर्फ एक रैपर है। – Dagang

8

एक gcloud अद्यतन कि एक सप्ताह पहले उतरा अवरुद्ध के बाद ssh आदेशों गुजर '-' और प्रभावी ढंग से इस बात के लिए --command विकल्प के उपयोग बाध्य करती है। इस मामले में उपयोग करें:

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

संबंधित मुद्दे