क्या मैं एक विशिष्ट निर्देशिका में SSH कर सकता हूं?


9

मैं हर दिन विभिन्न सर्वरों की भीड़ में एसएसएच करता हूं और उनमें से कुछ में अपनी वेबसाइटों के लिए अलग-अलग फाइल सिस्टम संरचनाएं हैं। हर बार जब मैं सर्वर बदलता हूं, तो मुझे वहां काम करना पड़ता है जहां मैं उन फ़ाइलों को प्राप्त करने जा रहा हूं जो मैं वास्तव में चाहता हूं (क्योंकि यह बहुत कम ही है जो मैं चाहता हूं ~)।

मैं अपने सभी कार्यों को स्वचालित करने के लिए फैब्रिक फ़ाइलों का उपयोग करता हूं (git पर पुश करने के लिए, स्वचालित SSH को git से खींचने के लिए, वेब एप्लिकेशन को पुनरारंभ करना, निर्भरता बदलना आदि), इसलिए मैं सोच रहा था कि क्या मैं यह भी नहीं बता सकता कि मैं चाहता हूं सही निर्देशिका में SSH करने के लिए, इसलिए मैं दौड़ सकता हूं fab sshऔर सामान्य SSH सत्र में हो सकता हूं , बस सही जगह पर और तुरंत काम करना शुरू कर दूं।

यह फैब्रिक के बारे में नहीं है; कृपया इसे अनदेखा करें। फैब्रिक सिर्फ कमांडों का एक बैच चल रहा है। मेरा तर्क sshआज्ञा के साथ है । यही मैं फैब्रिक को चलाने के लिए कहूंगा।

तो मैं कैसे प्राप्त कर सकते हैं sshकरने के लिए cdलॉग इन पर किसी विशिष्ट निर्देशिका में?

नोट: यह एक सर्वर या उपयोगकर्ता-विस्तृत चीज नहीं हो सकती है। मेरे पास कुछ सर्वरों पर एक उपयोगकर्ता के तहत कई वेबसाइटें हैं, ताकि कुछ में चिपके ~/.bashrcरहना मेरे लिए काम नहीं करेगा।

जवाबों:


9

वैसे मुझे पता था कि मैं लॉगिन पर कुछ चला सकता हूं, लेकिन मुझे पता था कि यह दौड़ने के बाद सीधे बाहर निकल जाएगा। अब मुझे जो याद है वह यह है कि मैं एक रिमोट सर्वर पर जितना चाहे उतना चला सकता हूं। आप बस एक साथ कमांड को चेन कर सकते हैं!

ssh user@server -t "cd /websites/website ; /bin/bash"

अब मैं कपड़े को ऐसा करने के लिए कह सकता हूं और हम दूर हैं। सरल।


मैंने कहा था कि फैब्रिक के साथ इसका कोई लेना-देना नहीं था, लेकिन यहाँ मेरे कपड़े की स्क्रिप्ट का नया भाग भी ऊपर के आधार पर है:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % {
        'server': server_host,
        'port': server_port,
        'remote_dir': remote_dir,
    })

मैं बहुत चर चारों ओर एक ही स्क्रिप्ट सिमलिंक ( server_host, server_portऔर remote_dir) साइट के लिए साइट से परिवर्तन।

क्योंकि फैब्रिक आउटबाउंड कनेक्शन को संभाल सकता है आप भी ऐसा कर सकते हैं:

def ssh():
    ''' SSH into the remote server at the correct directory '''
    run('cd %s ; /bin/bash' % remote_dir)

यह काम करता है लेकिन आउटपुट फैब्रिक से स्ट्रिंग के साथ जुड़ा हुआ है। इसने 80 से अधिक लंबे समय तक संकेत दिया और जब मुझे संकल्प के टन मिले, तो यह मेरे लिए बहुत ज्यादा है :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.