আমি মনে করি কীভাবে শেল দ্বারা বিকল্পগুলি পার্স করা হচ্ছে তার সাথে এর আরও করার আছে। উদাহরণস্বরূপ, এটি কাজ করে:
$ ssh root@server /bin/sh -c '"cd /boot && ls -l"'
এটি আপনার আদেশ হিসাবে একই সমস্যা আছে:
$ ssh root@server /bin/sh -c 'cd /boot && ls -l'
আপনি যদি -vস্যুইচ সক্ষম করে থাকেন তবে আপনি sshকী দেখতে পাচ্ছেন তা দেখতে পাবেন:
প্রথম আদেশ:
ডিবাগ 1: পাঠানো কমান্ড: / বিন / শ-সি "সিডি / বুট && ls -l"
২ য় আদেশ:
ডিবাগ 1: পাঠানো কমান্ড: / বিন / শ-সিসি / বুট && 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"?