आप उस आदेश को सर्वर पर चलाने के लिए SSH के तर्क के रूप में पास कर सकते हैं और फिर बाहर निकल सकते हैं:
ssh user@host "command to run"
यह कई कमांड की सूची के लिए भी काम करता है:
ssh user@host "command1; command2; command3"
या वैकल्पिक रूप से:
ssh user@host "
command1
command2
command3
"
जैसा कि अन्य उपयोगकर्ताओं ने मुझसे पहले कहा है, suसर्वर पर चल रहा है स्क्रिप्ट के बाद के कमांड को रूट के रूप में निष्पादित करने के बजाय एक नया शेल लॉन्च करेगा। आपको क्या करने की आवश्यकता है, sudoया तो स्विच के su -cसाथ SSH को TTY आवंटन का उपयोग करने के लिए या मजबूर -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इस प्रक्रिया को और भी आसान बना देगा।
आशा है कि ये आपकी मदद करेगा :-)