ssh

2012-06-30 12 views
5

के माध्यम से गुजरने वाले चर मैं कई दूरस्थ सर्वरों में लॉगिन करने और प्रत्येक सर्वर में एक स्क्रिप्ट निष्पादित करने के लिए एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं। हालांकि, मैं एसएसएच के माध्यम से एक चर पारित करना चाहता हूं। इस तरह कुछ:ssh

var="/home/dir/" 

    ssh -T $mchname <<'ENDSSH'  
    $var"run_script" <input> output &  
ENDSSH 

यह बेवकूफ प्रयास काम नहीं करता है ($ var बस शून्य है)। सही वाक्यविन्यास क्या होगा? अग्रिम में धन्यवाद।

उत्तर

4

ENDSSH से उद्धरण निकालें। वे here document के भीतर चर के विस्तार को रोकते हैं।

+0

ठीक है, यह काम करता है। लेकिन अब $ mchname में "run_script" समाप्त हो जाने पर नियंत्रण केवल मुख्य स्क्रिप्ट पर लौटाता है (भले ही मैं '&' का उपयोग कर रहा हूं), जो मैं नहीं चाहता हूं। मेरे द्वारा यह कैसे किया जा सकता है? बुनियादी सवालों के लिए खेद है। यदि आप चाहते हैं, तो आप मुझे कुछ एसएसएच ट्यूटोरियल पर इंगित कर सकते हैं जहां मैं इन चीजों को देख सकता हूं। धन्यवाद। – user1477337

+0

@ user1477337: एम्परसेंड गंतव्य मशीन पर प्रभावी है और इसका मतलब है कि नियंत्रण मुख्य स्क्रिप्ट पर अधिक तेज़ी से लौटता है क्योंकि इसे 'run_script' को पूरा करने के लिए इंतजार नहीं करना पड़ता है। लेकिन चूंकि 'ssh' कमांड के बाद कुछ भी नहीं है और यहां दस्तावेज़ है, इसलिए 'ssh' कनेक्शन बंद होने पर मुख्य स्क्रिप्ट को बाहर निकलना चाहिए जो लगभग तुरंत होना चाहिए। हालांकि, अगर आपको कुछ कारण है, तो आप 'ssh' कमांड को 'exec'' उपसर्ग करने का प्रयास कर सकते हैं:' exec ssh ... 'यह सब शैल से संबंधित है और ज्यादातर' ssh' के लिए विशिष्ट नहीं है। –

2

इस प्रयास करें:

var="/home/dir/" 

    ssh -T $mchname VAR=$var 'bash -s'<<'ENDSSH'  
    $VAR"run_script" <input> output &  
ENDSSH