मुझे लगता है कि शेल के द्वारा विकल्पों को पार्स करने के तरीके के साथ यह करना अधिक है। उदाहरण के लिए, यह काम करता है:
$ ssh root@server /bin/sh -c '"cd /boot && ls -l"'
यह आपके आदेश के समान समस्या है:
$ ssh root@server /bin/sh -c 'cd /boot && ls -l'
यदि आप -v
स्विच को सक्षम करते हैं तो आप ssh
देख सकते हैं कि क्या हो रहा है:
पहला आदेश:
debug1: कमांड भेजना: / बिन / श-सी "सीडी / बूट और & ls -l"
दूसरा आदेश:
debug1: कमांड भेजना: / bin / sh -c cd / boot && ls -l
आमतौर पर जब ssh
आप के माध्यम से आदेश भेजते हैं तो उद्धरणों पर विशेष ध्यान देना होता है और कोट के भीतर उद्धरण लपेटते हैं क्योंकि विभिन्न परतें उन्हें दूर करती हैं। भेजने में भी परेशान न करें /bin/sh
।
एक बार जब आप ssh
निम्नलिखित जैसे उद्धरणों को समझ लेते हैं, तो आप बहुत उपयोगी काम कर सकते हैं । यह रिमोट सर्वर पर कमांड चलाएगा लेकिन सिस्टम में स्थानीय रूप से उस फाइल पर रिजल्ट इकट्ठा करेगा जहां आपने ssh
कमांड चलाया था :
$ ssh root@server 'free -m' > /tmp/memory.status
या यह, जहाँ आप किसी निर्देशिका को दूरस्थ सर्वर पर टारगेट करते हैं और इसे स्थानीय सिस्टम पर बनाते हैं:
$ ssh remotehost 'tar zcvf - SOURCEDIR' | cat > DESTFILE.tar.gz
संदर्भ
ssh root@server /bin/sh -c "ls -l /boot"
?