यह एक पुराना सवाल है, और जेसन का जवाब ठीक काम करता है, लेकिन मैं इसे जोड़ना चाहूंगा:
ssh user@host <<'ENDSSH'
#commands to run on remote host
ENDSSH
इसका उपयोग su और कमांड के साथ भी किया जा सकता है, जिसके लिए उपयोगकर्ता इनपुट की आवश्यकता होती है। (नोट '
बच गए हेरेडोक पर ध्यान दें )
संपादित करें: चूंकि यह उत्तर ट्रैफ़िक के बिट्स को प्राप्त करता रहता है, इसलिए मैं हेरेडोक के इस अद्भुत उपयोग के लिए और भी अधिक जानकारी जोड़ूंगा:
आप इस वाक्यविन्यास के साथ आदेशों को घोंसले में डाल सकते हैं, और ऐसा प्रतीत होता है कि केवल घोंसले के शिकार का काम होता है (एक सामान्य तरीके से)
ssh user@host <<'ENDSSH'
#commands to run on remote host
ssh user@host2 <<'END2'
# Another bunch of commands on another host
wall <<'ENDWALL'
Error: Out of cheese
ENDWALL
ftp ftp.secureftp-test.com <<'ENDFTP'
test
test
ls
ENDFTP
END2
ENDSSH
आप वास्तव में टेलनेट, एफटीपी आदि जैसी कुछ सेवाओं के साथ बातचीत कर सकते हैं, लेकिन याद रखें कि हेरेडोक सिर्फ स्टड को पाठ के रूप में भेजता है, यह लाइनों के बीच प्रतिक्रिया की प्रतीक्षा नहीं करता है
संपादित करें: मुझे अभी पता चला है कि यदि आप उपयोग करते हैं तो आप इनडेस को टैब से इंडेंट कर सकते हैं <<-END
!
ssh user@host <<-'ENDSSH'
#commands to run on remote host
ssh user@host2 <<-'END2'
# Another bunch of commands on another host
wall <<-'ENDWALL'
Error: Out of cheese
ENDWALL
ftp ftp.secureftp-test.com <<-'ENDFTP'
test
test
ls
ENDFTP
END2
ENDSSH
(मुझे लगता है कि यह काम करना चाहिए)
Http://tldp.org/LDP/abs/html/here-docs.html भी देखें