आप उस आदेश को सर्वर पर चलाने के लिए 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
इस प्रक्रिया को और भी आसान बना देगा।
आशा है कि ये आपकी मदद करेगा :-)