एक विशिष्ट निर्देशिका में एसएसएच कैसे करें?


39

मैं अक्सर एक सर्वर में प्रवेश करता हूं, फिर एक विशिष्ट निर्देशिका में सीडी। क्या इन दो आदेशों को एक में सरल करना संभव है?

ssh bob@foo  
cd /home/guest

यदि संभव हो तो मैं 'फू' पर कुछ भी बदलने से बचना चाहूंगा, क्योंकि मुझे इसे सर्वर व्यवस्थापक के साथ स्पष्ट करना होगा। मैं बैश का उपयोग करता हूं, लेकिन मैं अन्य गोले में उत्तर के लिए खुला हूं।

जवाबों:


22

बस अपने ~ bob / .bash_profile फ़ाइल की अंतिम पंक्ति को foo पर रखें:

cd /home/guest >& /dev/null

अब हर बार जब आप लॉग इन करते हैं (चाहे SSH या अन्य द्वारा), cd कमांड चलेगा। Ssh के आस-पास कोई भी मैला करना आवश्यक नहीं है।

मुझे पता है कि आपने लिखा है कि "आप यदि संभव हो तो 'फू' पर कुछ भी बदलने से बचना पसंद करेंगे, लेकिन अगर बॉब @ फू खाता आपका है, तो अपना .bash_profile बदलना स्वीकार्य होना चाहिए, नहीं?


2
क्यों हां, मुझे लगता है कि यह बहुत अच्छा काम करेगा। मुझे उस परिवर्तन को करने के लिए आईटी से अनुमति लेने की आवश्यकता नहीं होगी। क्या आपको इस बात की विस्तृत जानकारी है कि आपको> और / देव / अशक्त क्यों है?
स्पूडर

6
मुझे लगता है कि होना चाहिए &> /dev/null। यह किसी भी त्रुटि संदेश को रोकता है जो सिर्फ मामले में दिखाया जा सकता है cd निर्देशिका / घर / निर्देशिका में बदलने में विफल रहता है। यदि आप उन संदेशों को देखना चाहते हैं जिन्हें आप अभी बाहर कर सकते हैं।
konsolebox

5
>&और &>बाश में भी यही हैं। उत्तरार्द्ध शैली को हालांकि पसंद किया जाता है।

इसके अतिरिक्त, रीडायरेक्शन टू / देव / नल, डायरेक्टरी के नाम को ऑनस्क्रीन होने से रोकता है, जो "सीडी" कर सकता है।
DanB

41

यह ओपनएसएसएच के साथ काम करता है:

ssh -t bob@foo 'cd /home/guest && exec bash -l'

अंतिम तर्क आपके लॉगिन शेल में चलता है। -tध्वज के लिए पारित sshबलों sshएक छद्म टर्मिनल है, जो एक इंटरैक्टिव खोल के लिए आवश्यक है आवंटित करने के लिए। -lध्वज के लिए पारित bashशुरू होता है एक के रूप में पार्टी की योजना बनाई लॉगिन खोल


3
मुझे आश्चर्य है, के रूप में अच्छी तरह से कोसने के लिए -l विकल्प जोड़ना सहायक होगा? ... && exec bash -l
konsolebox

1
@konsolebox: यह एक अच्छा विचार है। मैंने अपने उत्तर में इसे जोड़ दिया है।

17

आप इसे इस तरह भी कर सकते हैं, @ EvanTeitelman के समाधान के समान:

$ ssh -t bob@foo "cd /tmp ; bash"

या यदि आप दूसरे छोर पर शेल नहीं जानते हैं:

$ ssh -t bob@foo "cd /tmp && exec \$SHELL"

या इस तरह:

$ ssh -t bob@foo 'cd /tmp && exec $SHELL'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.