আপনি সার্ভারে এই কমান্ডটি চালানোর জন্য এসএসএইচের পক্ষে একটি আর্গুমেন্ট হিসাবে পাস করতে পারেন এবং তারপরে প্রস্থান করতে পারেন:
ssh user@host "command to run"
এটি একাধিক কমান্ডের তালিকার জন্যও কাজ করে:
ssh user@host "command1; command2; command3"
বা বিকল্পভাবে:
ssh user@host "
command1
command2
command3
"
অন্য ব্যবহারকারীরা যেমন আমার আগে ইঙ্গিত করেছেন, suসার্ভারে চললে স্ক্রিপ্টের পরবর্তী কমান্ডগুলি রুট হিসাবে কার্যকর করার পরিবর্তে একটি নতুন শেল চালু করা হবে। আপনার যা করা দরকার তা হ'ল হয় sudoবা ব্যবহার করতে su -cএবং টিটিওয়াই বরাদ্দকে জোর করে এসএসএইচে -tস্যুইচ দিয়ে (আপনার যদি রুট পাসওয়ার্ড দেওয়ার প্রয়োজন হয় তবে):
ssh -t user@host 'su - -c "command"'
ssh -t user@host 'sudo command'
সব মিলিয়ে আপনি যা করতে চান তা সম্পাদনের একটি উপায় হ'ল:
#!/bin/bash
ssh -t user@172.1.1.101 "
sudo some_command
sudo service server_instance stop
sudo some_other_command
"
যেহেতু sudoসাধারণত রুট পাসওয়ার্ড জিজ্ঞাসা করার আগে কয়েক মিনিটের জন্য আপনাকে অনুমোদনের স্তরটি সাধারণত স্মরণ করা হয়, কেবল sudoআপনাকে রুট হিসাবে চালানো সমস্ত কমান্ডের প্রস্তুতি নেওয়া সার্ভারের রুট হিসাবে কমান্ড চালানোর সম্ভবত সহজতম উপায়। NOPASSWDআপনার ব্যবহারকারীর জন্য একটি বিধি যুক্ত করা /etc/sudoersপ্রক্রিয়াটিকে আরও মসৃণ করে তুলবে।
আশা করি এটা কাজে লাগবে :-)